SaaS2026
Resolutions
Bilingual resolution tracker with goals, habits and progress health.
A passion project: Resolutions, a bilingual (English / Albanian) tracker for personal resolutions, built with Next.js 16, React 19 and Supabase. Each resolution breaks down into goals, milestones, habits and tasks, with check-ins, a journal, weekly and monthly reviews, a calendar and analytics.
The hard part is a pure, tested progress & health engine: weighted progress across all four components, timezone-aware habit streaks, and an on-track / needs-attention / behind verdict that always explains its reasons.
Architecture
- Frontend: Next.js 16 App Router with React Server Components, React Compiler and typed routes; Server Actions validated by strict Zod 4 schemas; Tailwind v4 + shadcn/Base UI, Recharts and a cmdk command menu.
- Data: Supabase Postgres with Row-Level Security on all 21 tables (per-command policies, explicit grants), an atomic
create_resolution_bundleRPC, and a single server-side writer for computed progress and daily snapshots. - Engine: pure domain modules for weighted progress (renormalised over goals, milestones, tasks and habits), habit streaks, deadlines and health rules; notifications and achievements are derived on app load by a service-role writer, with no cron.
- Plans: a rule-based EN/SQ sentence parser (verb and unit tables, amount and deadline extraction) that drafts goals, quarterly milestones, habits and tasks, behind a provider interface ready for an LLM.
- Infra & QA: one standalone, non-root Docker image with runtime
NEXT_PUBLIC_*config behind a reverse proxy; Vitest unit/UI tests, an RLS isolation matrix in integration tests, and Playwright E2E with axe checks.
Tech stack
Next.js 16React 19TypeScript 6React Hook FormZod 4SupabasePostgreSQL (RLS)Postgres RPCsTanStack QueryTailwind v4shadcn/Base UIRechartsnext-intldate-fnsVitestPlaywrightaxe-coreDocker