Aiman Aizuddin

Building Ledgerlane: a calmer way to control client invoices

I recently built and shipped Ledgerlane, a mobile-first workspace for a finance and supply-chain executive who needed a clearer way to manage client invoices.

The goal was practical: bring client records, invoice intake, payment status, return notes, original proof files, and reporting into one focused place. The result is now live at ledgerlane-app.web.app.

The problem

Invoice work often lives across spreadsheets, email attachments, and ad hoc follow-ups. That makes it harder to answer simple questions: what is still pending, what is overdue, which client does a record belong to, and where is the original proof?

Ledgerlane brings those answers into a single workspace without trying to automate away the review itself.

What I built

The decisions behind it

The product is deliberately manual-review-first. A person enters and verifies the important invoice details, while the original spreadsheet, image, or PDF remains available as proof. Ledgerlane does not send documents to AI, OCR, or external model services; spreadsheet suggestions and reporting calculations run locally in the browser.

On the engineering side, the React interface talks to a small DataStore boundary rather than importing Firebase directly. That keeps the UI independent from persistence and leaves room to change the backend later. The reporting logic is pure TypeScript, so calculations such as totals and overdue status can be tested without a browser or a live database.

The production workspace uses Firebase Authentication, Firestore, Storage, and Hosting. Access requires a verified and approved email address, keeping the single-workspace boundary explicit while the product is still focused on one trusted business workflow.

Shipping the first version

The first release includes automated type checks, unit tests, Firebase security-rule tests, staging and production deployment paths, route-level code splitting, responsive loading states, and an offline app shell for the PWA.

That work matters because the product is not just a screen for entering data. It is a small operational system: it needs to be trustworthy when records are added, understandable when access is not approved, and easy to hand over when a report is exported.

Ledgerlane is a v1, so it intentionally does not include OCR, automated approvals, foreign-exchange conversion, or a multi-tenant client portal. Keeping those boundaries clear made it possible to ship a useful workflow with the review responsibility in the right place: with the person who owns the financial decision.

#Ledgerlane #React #Firebase #Product-Build #Build-Log