Live2026
Astra CRM
Customers, services, vendor costs and invoices, with the rules enforced in Postgres.

Internal billing system for the Astra group. Issued invoices are immutable by database trigger, invoice numbers are gapless per brand, foreign vendor costs carry the Bank of Canada rate for the day, and there is deliberately no credential store. A Bearer-token API lets sibling services push customers in.
- Problem
- A vendor bills in US dollars once a year; the customer must receive a Canadian-dollar invoice on time without anyone remembering. Spreadsheets forget.
- Build
- A Next.js app over a Postgres schema where the invariants live: immutability triggers, a sequence allocator no session role can call, FX rates that are never overwritten, and row-level security on every table. PDFs render from a frozen snapshot.
- Outcome
- Running in production for the group's brands, with an idempotent ingest API that the hub and Astra Web Dev can call.
Related work
All work
LiveA local AI server on one RTX 3090: Open WebUI front door, five-model routing, plan mode and a sandbox.
- Open WebUI
- Docker
- RTX 3090
- Ollama