Personal R&D
Finances
A personal ledger and budgeting app with a Postgres-first architecture: one PostgREST instance, a static frontend, nothing else.
After five years as a heavy user of commercial finance apps that kept changing their own structure, I wrote down the requirements I actually had and built the tool myself. It runs on the smallest server I own and doubles as a playground for how thin a backend can get.
At a glance
- PostgreSQL is the backend: PostgREST exposes the schema, auth is a Postgres RPC with hashed tokens and role-based permissions
- The React/Vite frontend is static and deploys anywhere (Vercel, Cloudflare, a free-tier VM)
- Multi-account ledger, running balances, asset-breakdown history, and yearly budgets with monthly execution tracking
- An MCP server exposes the ledger to AI tooling for classification and analysis
Why I built it
Every finance app I used eventually redesigned its data model out from under me: categories merged, budgets became something else, exports stopped matching. I did not want features; I wanted to log transactions the same way for a decade. Having used these tools daily for years, the requirements were unusually clear, so building was cheaper than adapting again.
Architecture
The design goal was deployability. A single PostgREST process in front of PostgreSQL is the entire backend: tables, views and functions define the API, database roles enforce permissions, and login is a stored procedure that validates a hashed token and mints a JWT. There is no application server to patch or scale. The frontend is a React, Vite, TypeScript and Tailwind app that builds to static files, so it can live on Vercel or Cloudflare while the database sits on a small Oracle free-tier instance. Docker Compose brings the whole thing up locally with no configuration.
Functionally it covers accounts organised by type, a ledger with per-day running totals and export, an asset-breakdown history chart, and budgets planned yearly and executed monthly with minimum, maximum and remaining per category. The MCP server lets an assistant read balances and post transactions directly.
More projects
All projects- Question
- LLM
- Validation
- PostGIS
- Answer
Natural-Language Geospatial Query Platform
A product where users ask questions about geographic data in plain English and get answers, charts and maps back, generated by an LLM over PostGIS.
- FastAPI
- Python
- LangChain
- PostgreSQL
- +7

Geo360 LADM
The first land administration system in Brazil built on the ISO 19152 LADM standard, led while I was at Topocart.
- PostgreSQL
- PostGIS
- GeoServer
- LADM (ISO 19152)
- +4

Dragonfly GeoAnalytics
A geointelligence platform that helps municipalities fight dengue, Zika and chikungunya with drone imagery and case mapping.
- React
- Mapbox
- Highcharts
- Express
- +6