gfirm.dev
Home
Project · 2026

Your cards stop living in separate mental spreadsheets.

Installments, debit, cash or transfer: every expense in one place.

You can try the app at cuotapp.gfirm.dev

Context

I wanted a personal project to go deeper into full-stack with new technologies, and to put my QA mindset to the test on a domain that doesn't forgive mistakes: money.

Decisions

I built the whole thing on Next.js with Server Actions, no separate REST API. The decision that matters most is treating money as a serious problem: every amount lives in cents, never a float, and all the financial logic (installments, savings, limits, subscriptions) sits isolated in pure, tested functions, away from the UI and the database.

Result

Today it's an MVP running in production at cuotapp.gfirm.dev. Under the hood it has close to 20 unit tests over the domain logic and two end-to-end suites, all under strict TypeScript with continuous integration running on every push.

Traceability

Each requirement is backed by the test case that verifies it.

Requirements
R1 · Installment split exact to the cent
R2 · Monthly balance is net of installments
R3 · Amounts never mix across currencies
Test cases
T-01 Checks the installment sum never loses a cent
T-02 N installments lower the following months' balance
T-03 ARS and USD never mix; converting requires a rate