Years of quiet development. Then shelved. Then finished in an AI-powered coding sprint — with extensive pentesting and security hardening. From a single create-react-app commit to a full-featured European accounting platform with AI, Peppol e-invoicing, and PSD2 bank connections. 2,804 commits over 6 years.
Watch it grow
The entire repository rendered with Gource — every file, every contributor, 6 years in 4.5 minutes.
The story in commits
Quiet development, shelved, then finished in an AI coding sprint. This is how it happened.
The First Commit
Jerome Leclanche writes "Add CRA frontend" — a Create React App skeleton. The very next day, Jessica Mortimer starts building the accounting core: ledger accounts, account categories, and the double-entry transaction model. The DNA of the app is there from day one — this is a real bookkeeping system, not a spreadsheet with a UI.
- Ledger accounts with categories (Assets, Liabilities, Equity, Revenue, Expenses)
- Transactions with legs — proper double-entry from the start
- Tax calculation on transaction line items
- Dinero.js for safe currency arithmetic
The Next.js Pivot
After 6 months of CRA, Jerome starts a Next.js version. In a 48-hour sprint (Dec 6–8), he ports the entire app: account fetching, transactions, file uploads, attachments. Material UI becomes the component library.
The Team Assembles
The team grows from 2 to 8 contributors. Eugene DiBenedetto builds the first Plaid integration. Shinyuy becomes the most prolific contributor of the year with 461 commits — building everything from the balance sheet to the login flow.
- Balance Sheet and Income Statement reports
- Plaid, Stripe, and Wise integrations
- Login, registration, organization management
- VAT assessment and deduction rules
The Great Rewrite
258 commits in a single month. Jerome systematically replaces every Material UI component with Tailwind CSS. The Next.js app directory replaces the pages router. Axios is removed in favor of native fetch. Server components are adopted. The entire auth system moves from localStorage to cookies.
- Material UI → Tailwind CSS + headlessui
- Pages Router → App Router
- Axios → native fetch
- TypeScript strict mode enabled
Shelved
The longest gap in the project’s history. Only 4 commits in 23 months — dependency upgrades and an invitation flow. The Django backend still powers everything. The product exists, works, but the project is effectively shelved. Priorities shift, the team disperses, and Financica sits dormant.
The Supabase Migration
The biggest architectural decision in the project’s history. The entire Django/Python backend is removed and replaced with Supabase — PostgreSQL with Row Level Security, Supabase Auth, Storage, and Edge Functions. shadcn/ui replaces the custom Tailwind components.
- Django removed — Supabase becomes the entire backend
- PostgreSQL RLS policies for row-level authorization
- shadcn/ui component library
- Database-generated TypeScript types
The AI Sprint
The shelved project roars back to life. 907 commits in March 2026 alone — an AI-assisted coding sprint that transforms Financica from a dormant accounting ledger into a complete, production-ready business finance platform. AI coding tools accelerate development by orders of magnitude, but every feature is reviewed, tested, and hardened.
- Full invoicing system with UBL XML parsing
- AI transaction categorization and assistant
- Peppol e-invoicing (outbound, inbound, MLR)
- Exthand PSD2 bank connections
- Stripe billing with trial and plans
- Extensive pentesting and security audit
- Row-level security, CSRF, rate limiting
The Great Cleanup
Remove Plaid, Tink, Wise, and TrueLayer integrations — a bold pruning. After building integrations with five different banking providers, the decision is made to consolidate on Exthand and Stripe. Deleting working code because the architecture is stronger without it.
Commit patterns
The rhythm of development — visible in the data.
Commits per Month
Commits by Hour (UTC)
Peak at 20:00. Heavy activity through midnight–2 AM. Lowest at 07:00. Night owl confirmed.
Streaks & Cadence
Codebase Growth (thousands of lines)
The people
14 contributors shaped this codebase.
Technology evolution
The stack was rewritten multiple times. Each migration was deliberate.
Integration Graveyard
Built, used, and ultimately removed:
All replaced by Exthand (PSD2 aggregator) + Stripe Connect (payments).
Development philosophy
What the commit history reveals about how this team thinks.
Rewrite When Ready
Three major rewrites — CRA→Next.js, MUI→Tailwind, Django→Supabase. Each surgical and deliberate. November 2022: 258 commits in 30 days.
Small, Atomic Commits
Consistently descriptive and topical. Even during the March 2026 sprint with 907 commits, each change is self-contained and legible.
Build, Evaluate, Prune
Six banking integrations built and removed. i18next replaced. Victory charts became Chart.js. Engineering maturity over sunk-cost fallacy.
Security-First, European-Ready
Extensive pentesting and security audit. Row-level security policies, CSRF protection, rate limiting, input sanitization. VIES VAT, Peppol e-invoicing, PCMN chart of accounts. The hard problems, done right.
AI as Assistant
Transaction categorization suggests but requires approval. The AI assistant reads but doesn’t modify. OCR first, AI fallback. Trust human judgment for financial data.
Solo Sprint Capability
67.8% of commits from one person. Auto-generated types, RLS policies, server components, Biome at commit time. The tooling multiplies individual output.
“The best code is the code you delete.”
— Evident in the April 3, 2026 commit that removed five banking integrations in favor of one aggregator.
By the numbers
Today's codebase at a glance.
AI-powered bookkeeping for European businesses.
2,804 commits · 6 years · 138K lines of TypeScript