Skip to content
Contact
All work
In progress

Money

A personal accounting app with a Persian, right-to-left interface. Users record income, expenses and transfers by hand, or by talking to Claude, which saves them through the app's MCP connector.

Scope

  • Sign in with username and password, by invite only
  • Accounts with a starting balance and a live current balance
  • Income, expense and transfer transactions with categories, tags and notes
  • A Claude connector (MCP) with OAuth sign-in, so Claude can add, find, edit and delete the user's transactions
  • Monthly budgets per category, repeating every Jalali month
  • Reports, a dashboard, and CSV import and export

Decisions

  • Next.js over Vite, because the MCP endpoint, the OAuth server, sign-in and database access all live in one project as Route Handlers and Server Actions, with no separate backend.
  • Dates are stored as Gregorian and converted to the Jalali calendar only at the edges: in the UI and at the MCP boundary.
  • Every row belongs to a user, and the user id always comes from the session or the OAuth token, never from client input.
  • Zod validates every form, Server Action input, MCP tool input and CSV row.

Stack

  • Next.js
  • React
  • TypeScript
  • Postgres
  • Drizzle ORM
  • Better Auth
  • MCP
  • Zod
  • Base UI
  • CSS Modules
  • Storybook
Next projectThis portfolio