Skip to content
Almar Ramos Curto

§ Case study · Products

Nido Finance

A personal budgeting and spending-analysis app that replaces a monthly spreadsheet: a React PWA over Supabase.

Role
Sole developer
Period
Sep 2026 — Present
Status
Active
Source
Private repository

Stack

  • React 19
  • TypeScript
  • Supabase
  • PostgreSQL
  • Vite
  • Tailwind CSS
  • Vitest
  • Playwright
  • pgTAP
  • Vercel

Context

Nido Finance is a personal finance app that I am building on my own. It covers monthly budgeting, savings and spending analysis, and it replaces a spreadsheet that was kept month by month. It is a progressive web app (PWA), so it is meant to be installed on a phone and used there.

It is a small product, but it handles personal financial data, so I give priority to the tests and to the way the data is stored.

Approach

The goal is narrow: do what the monthly spreadsheet did, with the data in a proper database instead of in cells, and add spending analysis on top of it.

I keep the reasoning behind the main technical choices in the repository as architecture decision records (ADRs), so that a decision can be read, questioned and changed later, including by me.

Architecture

The client is a React 19 application written in TypeScript, built with Vite and styled with Tailwind CSS.

Supabase is the backend. The database is PostgreSQL, and its schema evolves through versioned SQL migrations, so every change to the schema is tracked in the repository. The frontend is deployed on Vercel, and both the hosted database and the deployment are already in place.

There is also one Edge Function, which produces an advice report generated by an AI model. It is disabled behind a feature flag. When it is switched on, it validates the model’s output before anything reaches the interface, because a response from a model is input like any other and cannot be trusted by default.

Quality

The tests cover three layers:

  • unit tests with Vitest for the application logic;
  • database tests with pgTAP, which run against the schema and its migrations;
  • end-to-end tests with Playwright, which exercise the app as a user would.

A verify workflow in CI runs three jobs, one for the app, one for the database and one for the end-to-end tests. I would rather have the database checked on its own than discover a broken migration through a failing screen.

Working with AI agents

I develop Nido Finance with AI agents. They work under a written agent contract, the AGENTS.md file in the repository, so the rules do not depend on what I remember to tell them each time.

I review every change before it is merged. The agents speed up the writing, but the decisions, the review and the responsibility for the result stay with me.

Status and next steps

Nido Finance works end to end and is in alpha. The hosted database and the frontend deployment are done.

Two things are pending: acceptance testing on iPhone Safari, and the work needed to make it a properly installable PWA. The AI advice report remains behind its feature flag.