← cd ../projects

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

TypeScriptNext.js 16React 19Tailwind CSS v4Radix UIFramer MotionnuqsNestJSTurborepopnpmVitestPlaywrightVercel

Interested in the details? Get in touch →