Overview
Isokratis is a mobile-first PWA for Byzantine church singers. While practicing a chant, the singer needs a stable reference drone — the isokratima. The app renders an interactive note grid in Byzantine notation and synthesizes the drone in real time, with scales, pitch shifting and per-user settings.
The product is a freemium SaaS: a free tier with four scales and a premium tier (14-day trial, cross-device sync, microtonal scales, envelope and EQ editors, custom samples). Everything — product, API, database and deployment — was designed and implemented by me.
What I built
The Byzantine music model is defined in units of moria, where an octave is 72 moria. The seven notes (Νη Πα Βου Γα Δι Κε Ζω) sit on a fixed tonic, and the note grid is generated by rotating the interval steps of the selected scale — a direct encoding of the theory in code.
The audio engine is a typed signal chain: AudioSource → ActiveVoice → DroneEngine → destination, where each voice is an oscillator or a buffer sample routed through a low-pass filter, EQ and gain with ADSR envelopes. Pitch shifting works in coarse (±6 moria) and fine (±1 moria) steps.
The API is a custom typed framework: each route is declared in a paired client/server module with shared Zod schemas, so request and response types are enforced end-to-end from a single definition. Session auth uses HttpOnly cookies with PBKDF2-derived password hashes, and session validation is cached in Cloudflare KV with automatic TTL to avoid D1 round-trips. Cross-device sync uses a stale-while-revalidate helper: IndexedDB answers instantly, the API refreshes in the background.
Technical highlights
- 72-moria music model with scale-interval rotation and fixed tonic (Κε = 220 Hz)
- Web Audio drone engine with polyphonic voices, ADSR envelopes and ±30 moria real-time shifting
- Typed client/server API contracts with shared Zod schemas
- KV-cached session validation; D1 schema for users, sessions, multi-provider logins and premium state
- i18n in four languages; PWA with offline caching and versioned service worker
- Tested with
bun test, including scale math and user CRUD integration tests
Outcome
Live at isokratis.com, with the premium flow, trials and cross-device sync in production.