← All projects
Project

Shayaak — Wellness Web App

A consent gate the model cannot get past, enforced at four call sites, with a provider swap behind one setting.

Live at shayaak.com4 App Store review cyclesDual billing rails
The problem
An app you write your private thoughts into is only worth trusting if those thoughts stay private — and most of them post everything to a third-party model by default.
What I built
A complete consumer product: web and iOS, accounts, two billing rails, and an AI companion that runs against either a hosted model under zero data retention or a local one, switched by a single setting. Journal text never leaves the server.
Where it is now
Live at shayaak.com, through four App Store review cycles, running on a server I administer with nightly backups.
Technical detail

React (Vite) frontend, Node/Express REST backend with 10 route modules, SQLite persistence, and session-based auth with bcrypt, Helmet, and rate limiting. The AI companion "Saya" runs over a provider-neutral adapter — one env var switches between hosted model under zero-data-retention and local Ollama fallback.

Privacy architecture: journal text never leaves the server, note access is a single user-facing switch enforced at four call sites, and an explicit consent gate blocks the provider call until the user agrees. Dual-rail subscription billing: Stripe on web + Apple In-App Purchase on iOS with server-side JWS receipt verification.

Built with

ReactNode.jsExpressSQLiteTogether AIOllamanginxsystemdStripeStoreKit 2CapacitorSwift