Skip to content
Ashutosh Giri
All projects
SaaS · Enterprise software2026Live

AUXO

Multi-tenant SaaS for outlet expansion

An enterprise SaaS platform for opening and running restaurant estates — projects and critical path, CAPEX, procurement, operations, supply chain and location intelligence. Every customer gets a physically isolated database. Fifteen modules, 74,600 lines, one codebase.

Lines of TypeScript
74,600Lines of TypeScript
Functional modules
15Functional modules
Database tables
38Database tables
Database per tenant
1:1Database per tenant
AUXO executive dashboard
The executive dashboard. Every tile drills through to the rows behind it.

What it is

AUXO is a multi-tenant SaaS platform for companies that open physical outlets at scale — restaurant groups, café chains, retail estates. A customer signs up, gets a workspace, invites their team, and runs their entire expansion programme inside it: every site, every task, every rupee, every licence.

It is a commercial product, not a demo. Fifteen modules, thirty-eight tables, seventy-four thousand lines of TypeScript, and a tenancy model built for the one failure a SaaS business cannot survive.

The problem it solves

Opening a restaurant is a construction project, a procurement programme, a licensing exercise and a hiring drive that all have to land on the same day. Opening twenty-five at once, across four cities, is a different problem — and almost every group doing it runs on spreadsheets, email threads and a WhatsApp group per site.

That works until it doesn’t. The failure is rarely dramatic. It is a gas connection nobody chased, a fitout drawing two revisions stale, an invoice paid twice because two people tracked it in different files. Each is small. Together they are the difference between opening in March and opening in June — and in this business a month late is a month of rent against no revenue.

The modules

Fifteen of them, resolving to four jobs.

Get the site open. Projects broken into stages and tasks, an interactive Gantt with a computed critical path, dependency graphs, and a 155-item opening checklist per outlet. Drag a bar and everything downstream reschedules.

Control the money. CAPEX budget against actual by category, cashflow planned versus drawn, and full procurement — RFQ → purchase order → goods receipt → invoice → payment, with multi-level approvals at each hop.

Run the estate once it trades. An SOP engine where a daily checklist, an FSSAI audit and a regional store visit are the same object with different settings: 26 input types, weighted scoring, auto-fail items, conditional logic, and evidence carrying GPS, device and duration.

Decide where to go next. Location intelligence scoring catchments, competitor density, white space and market coverage — so the next site is argued from evidence rather than instinct.

Underneath, a Microsoft Dynamics 365 Business Central connector keeps finance in step, and an AI Copilot answers from live rows rather than from a model’s guess — scoped to what the person asking is allowed to see.

The tenancy model

For a multi-tenant product there is exactly one failure that cannot be walked back: one customer seeing another customer’s data. A wrong number in a report is embarrassing and fixable. A cross-tenant read is a disclosure, and no later release un-discloses it.

Most SaaS keeps every customer in shared tables and separates them with WHERE tenant_id = ?. That works precisely as long as every query in the codebase remembers the clause — including the report written three years later by someone who has never heard of the tenancy model. One forgotten WHERE and the product leaks.

AUXO gives every workspace its own physically separate database. Another customer’s rows are not in the file being queried. A query that forgets to filter does not leak — it returns nothing. The mistake is not caught. It is unrepresentable.

The tenant is bound once at the edge of the request in an AsyncLocalStorage scope and read at the bottom by getDb(), rather than threaded through several hundred call sites where a single miss would be silent. On the server, a database access outside any tenant scope throws rather than falling back:

Database access outside a tenant scope. On a multi-tenant server every request must run inside runInTenant(); this is refused rather than served from a shared database.

Refusing is recoverable. Quietly opening a shared database is not. That guard caught a real defect the first time it ran — handler registration was resolving getDb() once at startup, which on a server would have captured the first customer served into every handler’s closure and served their rows to everyone afterwards.

Sessions are HttpOnly cookies, never localStorage. Passwords are scrypt with a unique salt. Account, workspace and membership are re-resolved on every request, so suspending a workspace or removing a member takes effect immediately rather than whenever a session happens to expire.

Deployable three ways — which is a sales advantage

The hosted SaaS is the product. But the same codebase also runs as a desktop application and on a phone, and that matters commercially rather than being a curiosity.

Enterprise buyers in this sector routinely refuse cloud storage of commercial terms and site data. AUXO can answer that: the identical product, running entirely on their own machine, with data never leaving it. Most SaaS competitors have to say no to that customer.

These are not three ports. They share the same handlers, the same schema and the same permission checks, and differ only in how a call travels:

        React interface  ·  identical on every surface

        ┌────────────┼────────────┐
        │            │            │
     HTTP      Electron IPC   Capacitor
        │            │            │
  per-tenant     local DB     local DB
   SQLite       (on-prem)     (mobile)

Adding a feature adds it everywhere, because there is only one of it.

Where it scales next

Being straight about the current ceiling, because a serious buyer will ask.

The hosted deployment runs as a single machine. Every tenant is a SQLite file on one volume, so a second machine would hold its own copy and the two would diverge. Scaling today means a bigger machine, not more of them.

That is the correct trade at this stage — it is fast, cheap to run, and the isolation guarantee is stronger than what shared-table competitors offer. The path beyond it is known and does not require rewriting the product: the data layer is reached through one function, so moving tenants onto Postgres or libSQL/Turso changes that layer rather than the fifteen modules above it.

Try it

The demo runs on fictional data — an invented restaurant group, synthetic vendors, generated financials. Every visitor gets their own isolated workspace, seeded with a complete 25-outlet portfolio, so you can change anything without affecting anyone else.

Source

AUXO is closed source. The repository is private, and the server — handlers, schema, permission model, integrations — never leaves the machine it runs on.

Inside the product

Ten of the fifteen modules

Gantt & critical path
Gantt & critical path — Drag a bar and everything downstream reschedules. Red is the critical path; late tasks are flagged against today.
CAPEX control
CAPEX control — Budget against actual by category, with cashflow planned versus drawn across the programme.
Procurement
Procurement — RFQ → purchase order → goods receipt → invoice → payment, with approvals at each hop.
Supply chain
Supply chain — Vendor performance, contracts and rate cards across 250 suppliers.
Operations
Operations — The SOP engine — daily checklists, audits, maintenance and compliance as one object with different settings.
Location intelligence
Location intelligence — Catchment analysis, competitor density, gap maps and white space — where to open next, argued from evidence.
AUXO Brain
AUXO Brain — An offline copilot answering from live rows, scoped to what the asker is allowed to see.
Analytics
Analytics — Portfolio-wide BI, exportable to CSV, Excel, PDF, PNG and PowerPoint.
Projects
Projects — Every outlet in the portfolio, by stage, health and phase.

Want to look around inside it?

Demo accounts are provisioned on request. Tell me a little about what you want to see and I'll set one up.

Request access