Skip to content
← All work

Golden Books

Accounting and bookkeeping SaaS for India (GST, INR) and the UAE (VAT, AED), with the controls auditors expect.

Ask for a demo
Role
Product lead, Design, Co-built
Year
2026
Region
India, UAE
Built with
React, Tailwind CSS, NestJS, Supabase, AWS, GitHub Actions
Status
Live · erp.wazirs.in
A journal entry is checked as balanced before it can be saved

[01]

// THE PROBLEM

Why it exists

The
Problem

An accounting firm keeps the books for many companies at once, often across two tax systems. In India that means GST in rupees; in the UAE, VAT in dirhams.

General-purpose tools make it easy to change a number after the fact. For books that an auditor will read, that is the wrong default: every figure has to trace back to an entry, and a closed month has to stay closed.

[02]

// WHAT I BUILT

The rules

What I
Built

  1. 01

    One login, many sets of books

    A super admin runs the platform. Each organisation holds its companies, and each company keeps its own books, so one firm can work on many clients without their figures ever mixing.

    1. Super Admin
    2. Organisations
    3. Companies
    4. Books
  2. 02

    Entries are drafts until they are posted

    Work in progress stays a draft and can be edited freely. Posting makes an entry part of the books, and from then on it can't be edited in place.

    EntryDescriptionAmountState
    JV-0141Office rent, March12,000.00Posted
    JV-0142Courier charges340.00Draft
    Illustration, made-up entries
  3. 03

    Mistakes are corrected by reversal

    A wrong posted entry is never overwritten. It is reversed by an equal and opposite entry, and the right figure is posted fresh, so the books show what happened and when.

    EntryDescriptionAmountState
    JV-0151Consulting fee8,500.00Reversed
    JV-0152Reversal of JV-0151−8,500.00Reversal
    JV-0153Consulting fee5,800.00Posted
    Illustration, made-up entries
  4. 04

    An activity record that only grows

    Every change is written to an append-only record. Nothing in it can be edited or deleted.

  5. 05

    Closed periods stay closed

    Once a period is locked, nothing can be posted into it. Figures that have been reported or filed don't move.

  6. 06

    GST and VAT, side by side

    Indian companies keep GST books in rupees; UAE companies keep VAT books in dirhams, on the same platform.

    India

    • GST
    • INR

    UAE

    • VAT
    • AED

[03]

UNDER THE HOOD

Request path

  1. BrowserReact app
  2. CloudFronterp.wazirs.in: serves the app from a private S3 bucket, sends /api/* on
  3. Load balancerAccepts traffic from CloudFront only
  4. APINestJS on ECS Fargate
  5. SupabasePostgres + Auth

Deploy

  1. 01Push to main
  2. 02GitHub Actions
  3. 03AWS CDK
  4. 04API image to ECS Fargate
  5. 05App build to S3 + CloudFront
  6. 06Smoke check
Drawn from the project's infrastructure code (AWS CDK) and deploy workflow, not from memory.

Decisions worth explaining

  • Posted means permanent

    Allowing edits to posted entries would be simpler to build and easier to use, and it would make the books impossible to audit. Reversal keeps both the mistake and the fix on the record.

  • Locking by period

    Accountants work in months and quarters, so locks follow the same calendar. Once a period is filed, its figures are protected from later edits.

  • Infrastructure as code

    The AWS set-up is defined in CDK and deployed by GitHub Actions, so an environment can be rebuilt from the repository rather than from memory.