Multi-tenant billing and POS
BillFlow
Cloud billing and point of sale for Indian businesses: GST invoicing, inventory and a fast barcode-driven counter.
- Role
- Team project. I built the Quick Order counter and the theme system, across the Catalog APIs and the Next.js frontend
- Status
- Live
- Stack
- Next.js 15, TypeScript, .NET 10, PostgreSQL, Redis, RabbitMQ, Docker

Results
- .NET microservices behind one gateway
- 4
- colour themes at WCAG AA contrast
- 13
- Ampere server runs the whole platform
- 12 GB
01Problem
Retail shops, supermarkets, restaurants and pharmacies need GST invoices, stock, purchases and a quick counter in one place. Each company's data has to stay isolated from every other company's, and the cashier screen has to keep up with a queue.
02Architecture
A Next.js web app with BFF API routes and httpOnly-cookie auth sits in front of a YARP API gateway and four .NET microservices: Identity, Catalog, Commerce and Engagement. PostgreSQL 16 uses a schema per service and row-level security for tenants, with Redis, RabbitMQ and MassTransit alongside. It is deployed with Docker Compose on a 12 GB Oracle Cloud Ampere server behind Cloudflare.
03Key decision
Computing order totals, GST splits, stock changes and document numbers on the server, so every client gets the same results. On my side, Quick Order was built for speed at the counter: type-ahead search, a quantity shortcut like "6x milk", and camera, USB and Bluetooth barcode scanning.
04Result
Live at billflow.sssspro.com. My part of the team's work was the Quick Order counter with its walk-in customer flow and order editing, the same fast product entry on the standard order form, and a theme system of 13 palettes that all meet WCAG AA contrast for button text, with unit tests on both the .NET and Next.js sides.