WORK INDEX
BOOK A CALLEMAIL ME
OWN PRODUCT  ·  IN PRODUCTION  ·  2026

A finance app thatforecasts instead ofreporting.

PRODUCT
Monark
ROLE
Everything
STACK
Next.js · TS
DATA
Postgres · Prisma
HOST
Vercel
Monark dashboard
01  THE PROBLEM

Budget apps report the past. Nobody needs a report.

Every personal finance tool I tried answered the wrong question. They tell you what you spent, in a chart, after the fact. The question that actually matters on day four of the month is whether you are on track to end it badly.

So Monark's dashboard does not open with a chart. It opens with a sentence: your net position and where the month is pacing to. The visualisation is secondary to the statement.

The design constraint I set: if the headline needs a legend to be understood, it is wrong.
02  ARCHITECTURE

Deliberately small.

One Next.js app, one Postgres database, Prisma between them. No microservices, no message bus, no event sourcing. A single-user finance app does not need distributed anything, and every extra moving part is something that can be down at 2am for no revenue.

FIG. 02.1 / SYSTEM
CLIENT
next.js
SERVER ACTIONS
user-scoped
PRISMA
typed
POSTGRES
source of truth
EVERY TOTAL IS DERIVED ON READ, NOTHING IS CACHED OR ROLLED UP
NO QUEUE, NO CRON, NO SECOND COPY OF A NUMBER
03  DATA MODEL

Constraints in the schema, not in the app.

Anything the database can guarantee, the database guarantees. Application code is where rules go to be forgotten.

transactions
Amounts in minor units as bigint, with an income or expense type rather than a sign. Category is a foreign key, never a string.
budgets
Unique on user, category and month, so two budgets cannot fight over the same month and the database is what says so.
recurring_transactions
A template plus the last month it was advanced past, so confirming or skipping a month is idempotent and a missed run cannot double-post.
goals
Target plus optional deadline. Progress is summed from contributions, never stored, because stored progress goes stale silently.
04  STACK MANIFEST
CLIENT
Next.js · React · TypeScript · Tailwind
SERVER
Node · Server Actions · NextAuth · bcrypt
DATA
Postgres · Prisma · pg
SERVICES
Vercel · Resend · Gemini
Want this level of thinking on your product?