Forking Around

Financials

Because checking your bank balance shouldn't feel like defusing a bomb.

Financials
The Story Behind the Madness

How Financials Escaped The Idea Graveyard

A personal finance command center with a triple-entity ledger (business, personal, joint) — each color-coded so money never ends up in the wrong pocket. Imports CSVs from multiple French banks despite their wildly different formats, auto-categorizes across 70+ subcategories, and includes "the Vault" — a 48-hour impulse-spending lock on discretionary purchases. Handles VAT provisioning, recurring transaction detection, budget goals with projections, and full analytics. Ships with FR/EN i18n, light/dark themes, and a fully local-first architecture — zero cloud, zero telemetry.

Genesis Spark

Started as a borderline ridiculous experiment that somehow refused to die during refactors.

The first proof-of-concept was duct-taped together in under 48 hours. It broke. A lot. But the core loop felt magical enough to justify polishing instead of abandoning. That was the moment it graduated from "random script" to "this might become real".

Core Problem & Insight

Beneath the jokes sits a very real friction: people kept wrestling with inefficient, boring, or psychologically draining workflows. That emotional tax became the design compass.

Known Chaos

  • Parsing CSV exports from multiple French banks that apparently all agreed to use completely different formats — varying delimiters, date formats, column layouts, debit/credit conventions, and embedded category metadata that each bank decided to invent from scratch.
  • Designing a triple-entity architecture where business, personal, and joint accounts each maintain independent ledgers while still showing a consolidated net-worth view — without the whole thing collapsing into spaghetti the moment you add inter-account transfer detection.
  • Building a 48-hour impulse purchase friction system that intercepts discretionary spending without accidentally blocking rent, CSV imports, or business transactions. Turns out teaching a system the difference between 'treat yourself' and 'pay your bills' is harder than it sounds.

Solutions

  • Built a bank profile system with configurable column mappings, regex-based header detection, French number parsing, and bank-specific category inference. Banque Populaire, Banque Populaire Pro, and Crédit Agricole work out of the box — adding another bank is just another profile.
  • Separated all financial logic into pure calculation functions with entity-scoped filtering, transfer type detection (salary, joint, savings), and entity-based UI theming via CSS custom properties. Switching contexts is instant and visually obvious.
  • Implemented category-aware rules that only intercept VARIABLE_WANTS above a threshold, with source-based exclusions for CSV imports and entity-based exclusions for business accounts. Funds stay locked until explicitly released or cancelled — no workarounds.

Architecture Philosophy

Pragmatic modularity over premature perfection. Each subsystem is isolated enough to be refactored ruthlessly, but integrated just enough to keep velocity absurdly high.

Next.js

Next.js

A React framework for building server-side rendered and static web applications.

React

React

A JavaScript library for building user interfaces using a component-based architecture.

TypeScript

TypeScript

A typed superset of JavaScript that compiles to plain JavaScript.

Tailwind

Tailwind

A utility-first CSS framework for rapidly building custom user interfaces.

Recharts

Recharts

A composable charting library built on React components and powered by D3.

React Context API

React Context API

A React feature for sharing state across the component tree without prop drilling.

Screenshots That Don't Lie

Visual proof that this thing actually works

Financials screenshot 1
Click to enlarge
Financials screenshot 2
Click to enlarge
Financials screenshot 3
Click to enlarge
Financials screenshot 4
Click to enlarge
Financials screenshot 5
Click to enlarge
Financials screenshot 6
Click to enlarge
Financials screenshot 7
Click to enlarge
Financials screenshot 8
Click to enlarge
Financials screenshot 9
Click to enlarge
Financials screenshot 10
Click to enlarge
Financials screenshot 11
Click to enlarge
Financials screenshot 12
Click to enlarge
Financials screenshot 13
Click to enlarge
Financials screenshot 14
Click to enlarge
Financials screenshot 15
Click to enlarge

Ready to Experience the Magic?

Don't just read about it, go play with it! (We're not responsible for productivity loss)