PERSONAL PROJECT · FULLSTACK
Dewasa Ayu: Balinese Auspicious-Day Finder
role: Solo Developer
links:live site ↗source ↗
## problem
Picking a good day (dewasa ayu) for a Balinese Hindu ceremony means reading the Wariga calendar: Pawukon, ten concurrent Wewaran cycles, Sasih, and Penanggal/Pangelong. Printed calendars show the raw components but not what they mean for a particular ceremony, so the first-pass shortlist is either guesswork or a trip to a Sulinggih for something a calculation can narrow down.
## what I built
Built the whole stack solo: a dependency-free TypeScript engine that derives every Balinese calendar component from a date, a rules package where each ceremony is a config object rather than a branch in the engine, and a Next.js 16 front end that renders the month grid, the per-date breakdown, and the five nearest good dates. The deployed site runs the engine in-process; the repo also carries a NestJS service that exposes the same engine over REST for third-party consumers, which is not yet deployed. Scores are weighted per ceremony and every factor behind a rating is shown, so a result can be audited rather than taken on faith. The site states plainly that it is a reference, not a replacement for a Sulinggih.
## highlights
- Dependency-free Wariga engine, cross-checked against an independent Balinese-date library across a 20-year range
- Ceremony rules live in config objects: a new ceremony is a data change, not an engine change
- Transparent scoring, with every factor behind a rating shown in the UI rather than just a verdict
- Turborepo workspace with Vitest unit tests and a Playwright end-to-end suite
- Accessibility as a feature: font scaling, high-contrast mode, WCAG 2.1 AA target
## tech stack
Interested in the details? Get in touch →