Skip to content

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.

At a glance

Status: In Progress

Role
Founder & sole engineer
Type
Own product
Domain
FinTech, SaaS
Focus
Double-entry Accounting, General Ledger, Financial Reporting, Multi-tenancy
Stack
  • Next.js
  • NestJS
  • PostgreSQL
  • Drizzle
  • Redis
  • BullMQ
  • TanStack Query
  • Paddle
Architecture: Intent to journalWeb app to API (intent); API to Ledger engine (post); Ledger engine to PostgreSQL (journal); Paddle to API (webhooks); API to Job queue (enqueue); Job queue to Report builder; Report builder to PostgreSQL (query)intentpostjournalwebhooksenqueuequeryUIWeb appNext.js · TanStackSVCAPINestJSSVCLedger enginedouble-entryDBPostgreSQLDrizzleEXTPaddlesubscriptionsMQJob queueBullMQ · RedisJOBReport builderP&L · balance sheet
Fig. 01 Akaunty architecture: Intent to journalSolid: request · dashed: async · dashed box: external

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

  1. D1

    Intent in, journal out

    The UI records intent; the ledger engine owns the accounting rules, so they live in one tested place.

  2. 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.

  3. 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

Related services

Build something similar

Planning a product like Akaunty? Tell me what you're building and when you need it. I'll reply with questions or a proposal.