Case study 01
Akaunty
Akaunty is bookkeeping for people who don't want to learn bookkeeping. Freelancers, agencies, NGOs and small businesses record money in and money out in plain terms, and Akaunty writes the balanced double-entry journal underneath. From that journal it produces profit and loss, cash flow, balance sheet, trial balance and general ledger reports.
- Founder & sole engineer
- Own product
- FinTech, SaaS
- Double-entry Accounting, General Ledger, Financial Reporting, Multi-tenancy
- Next.js
- NestJS
- PostgreSQL
- Drizzle
- Redis
- BullMQ
- TanStack Query
- Paddle
What Akaunty does
- Plain-language entry: record "I got paid" or "I spent money", and the balanced journal entry is written for you
- A chart of accounts for each business, ready to use from day one
- Double-entry general ledger underneath every transaction
- Profit & loss, cash flow and balance sheet reports
- Trial balance and general ledger views
- A separate, isolated workspace for each business
- Subscription billing through Paddle
The problem
Small businesses need real books (a balance sheet, a trial balance, a P&L) but they don't think in debits and credits. Most simple tools give up the accounting; most accounting tools give up the simplicity.
Approach
The interface asks plain questions: money in or money out, from whom, for what. A ledger engine turns each answer into a balanced double-entry posting against the tenant's chart of accounts. Every report is then a query over the same journal, built in the background for larger books.
Key decisions
- D1
Intent in, journal out
The UI records intent; the ledger engine owns the accounting rules, so they live in one tested place.
- D2
Reports from the journal
P&L, cash flow, balance sheet and trial balance all derive from posted lines, so they reconcile with each other by design.
- D3
Billing via webhooks
Paddle handles subscriptions; plan changes reach the API only through verified webhook events.
My contributions
- Came up with the product idea and defined its scope
- Designed the ledger engine that turns plain-language intent into balanced double-entry postings
- Built the whole stack alone: Next.js frontend, NestJS API, PostgreSQL with Drizzle, and Redis/BullMQ workers
- Integrated Paddle for subscription billing