← all projects
CASE STUDY2025

Moneyly

Next.jsTypeScriptTailwindCSSTanStack QueryExpressDrizzle ORMPostgreSQL

PROBLEM

Personal finance scattered across spreadsheets: no consolidated view, no budget alerts and no incentive to stick to savings goals.

ARCHITECTURE DECISIONS

Front in Next.js and API in Express with Drizzle over PostgreSQL, in separate repos. The contract lives in Zod schemas: they generate the OpenAPI spec and, from it, kubb and orval generate the typed hooks the front consumes — change the schema and the front breaks at compile-time, not in production. TanStack Query handles cache and invalidation.

db/schema.ts
undefined

RESULT

Full app in production: monthly dashboard, transactions tracked by category, budgets with progress and savings goals.