What We Built
A city's festivals are kept by the people who walk them. The dates arrive by word of mouth, the routes live in memory, and what a visitor may or may not do at a shrine is learned by being told. Sampada gives that knowledge an official home: the municipality that owns the heritage publishes it once, in four languages, and it reaches a phone in the old city and a phone abroad on the same day — verified, and attributed to the office that verified it.
Sironik built it as a platform, not a one-city app. A culture and heritage department writes, translates and publishes in a dashboard; the app carries whatever that department has published, and names it as the city's. Lalitpur Metropolitan City's Culture & Heritage Department is the first to publish through Sampada, and its jatras and monuments are what the app holds today; the model is meant for the municipalities and heritage bodies that come next.
The platform is three pieces built as one. A .NET 10 API holds the content and the identities. An Angular dashboard is where staff write and publish — a festival is not publishable until every language is filled in, which is what keeps the Nepali and the French versions of a jatra the same festival. A Flutter app carries the result, and is built to work when the network does not.
Offline is the first requirement, not a fallback. The app ships with a bundled snapshot of the published content and its photos, then keeps the latest content bundle on disk, versioned with an ETag so a phone downloads only what changed. A visitor standing in a courtyard with no signal still has the festival, the route, the visiting hours and the map.
Around a festival, Sampada does what a printed calendar cannot. The calendar runs in Bikram Sambat, Nepal Sambat and the Gregorian calendar — the Nepal Sambat one computed on the phone from the Moon's elongation at sunrise, because the app must not need a server to tell a Newar what day it is. Reminders arrive the evening before and on the morning of a festival, scheduled by the phone itself. A festival can be handed to the phone's own calendar. While a chariot is out, the app follows the procession along its route; when it is not, the route's stops are still there to walk.
Heritage sites carry what to see, when they are open and how to behave, with guidance written for visitors kept separate from what a local already knows. Distances, "near you" and the blue dot on the map are worked out on the phone: location never leaves the device, which is why the app declares no location data to either store.
An account is optional and buys exactly one thing — favorites that follow you to another phone. Sign-in is by email, Google, or a code by SMS to a Nepali number through Sparrow SMS. There is no advertising, no analytics and no crash reporting in the app at all, and deleting an account scrubs the name, phone and email out of the audit trail in a single transaction.
Underneath: a layered .NET 10 API (Domain to Application to Persistence and Infrastructure to Api, enforced by architecture tests) over PostgreSQL, where translatable text is a jsonb column in four languages and every publish writes a revision. Handlers return results that map to RFC 9457 problem+json, and every endpoint's authorisation is asserted by a test. Photographs live in Google Drive under a storage ledger that records the provider, container and key of every stored copy, and are served through the API with a server-side cache. Azure Pipelines deploys the API, the dashboard and the public pages to a self-hosted agent behind nginx and systemd.
Sampada is in production — dashboard and API live, Lalitpur's content being published — and in the last stretch of preparation for the App Store and Google Play.
We scope, architect, and ship platforms like Sampada — Living Heritage, City by City end to end.