A Hindu calendar computed for your own city, not a national reference clock
A panchang and festival calendar where every date is computed from real per-city sunrise — build-time astronomy, ~28.8K static pages, no ads, no accounts, no server.
Context
Most panchang apps and sites compute every date off a single national reference point, then show the same tithi to someone in Chennai as someone in Chandigarh. That's wrong — sunrise, and everything the panchang derives from it, genuinely differs by city. The other common pattern is an ad-heavy, login-walled app that funnels toward an astrology upsell.
We built Chakra to be neither: a calm, accurate, ad-free Hindu calendar computed for where you actually live.
The problem
- Sunrise/sunset depend on real latitude, longitude and elevation — a national reference clock gets the tithi boundary wrong for most of the country, most of the time.
- A calendar this personal needs to be trustworthy. "Looks plausible" isn't good enough when someone is timing a vrat or a muhurat off it.
- The obvious naive build recomputes astronomy in the browser or on a server on every request — slow, and a second place for the date math to quietly drift from the app's.
- Real panchang apps in this category are usually funded by ads and upsells. We wanted the opposite: no ad network, no accounts, no telemetry — not a toggle, but an architecture that has no code path for any of it.
What we built
- Astronomy computed once, at build time —
astronomy-engine(MIT, VSOP87/ELP series) runs in a Node/TS CLI to emit a precomputed almanac dataset (2020–2100). Nothing is calculated live in a browser or on a server per request. - One shared Dart core, two products.
panchang-core(NOAA sunrise/sunset per city),festival_core(57 festival/vrat/sankranti rules across 6 tradition presets) and a 185-city dataset are consumed by both the Flutter app and a Dart CLI that precomputes every web page's JSON — so a date is never computed two different ways between app and site. - A static Next.js 15 site, ~28.8K pages —
/panchang/<city>/<date>and/festivals/<slug>/<year>, generated at build time from that precomputed data. No server, no database, no panchang math shipped to the browser. - Golden-tested. Every engine module is checked in CI against externally sourced references (drikpanchang.com, U.S. Naval Observatory) — a wrong date fails the build before it ships.
- A Flutter mobile app (Riverpod + Isar) — daily panchang, festival/vrat calendar, vrat tracking with reminders, an aarti/chalisa library, multi-location support, home-screen widgets. Feature-complete; remaining work is release engineering (store signing, subscription configuration, notification reliability) ahead of a public store listing.
- Cloudflare Workers, D1 and R2 for the site's edge infrastructure and content storage.
Result
The panchang engine, the 57-rule festival/vrat system, and the website are complete and live at dailychakra.app — real per-city astronomy, ~28.8K pages, zero ads or accounts. The mobile app is feature-complete and in release engineering toward a public store listing. It's the build we point to for data-correctness rigor and large-scale static generation, not just UI work — the kind of problem where "it looks right" and "it is right" are different bars, and only one of them was acceptable.
Built with
Ready to build
Have something to build?
Send a few lines about your project. We reply within one business day with an honest read.
Start a projectNot ready to commit? Book a 15-minute build-readiness call instead — leave with a rough scope, the likely risks, and the next sensible step, even if we're not the right studio.
Best for founders with a product idea, rough spec, or existing app that needs senior builders.