SaaS · Point of sale
Multi-tenant POS & back-office SaaS for restaurants and cafés
A platform sold to many food businesses at once: a desktop till that keeps selling offline, kitchen and queue screens, a company portal, loyalty and marketing, fiscal receipts and public APIs for their mobile apps.
- Role
- Co-lead engineer · API, portal, till and offline hub
- Years
- 2026
- Platforms
- API · Admin panel · Desktop app · Offline hub · Website
- My share
- ~52% of commits
The challenge
Cafés can't stop selling when the internet drops, and a SaaS can never leak one company's data into another's. The platform had to run walk-in sales offline, sync safely later, and keep dozens of tenants strictly apart — while covering everything from menus and stock to staff, payments and loyalty.
How I solved it
- 01
Tenant isolation enforced twice: every query carries the company scope explicitly, and a database extension throws if a query ever forgets it. Any exception must be allow-listed with a written reason.
- 02
An offline branch hub with its own local database runs walk-in sales when the cloud is unreachable; every sync command is deduplicated per terminal, so a retry can never double an order.
- 03
A transactional outbox feeds background queues and HMAC-signed webhooks, so events are never lost between a sale and the systems that react to it.
- 04
Idempotency keys on partner orders, refunds with an explicit 'outcome unknown' state and a nightly reconciliation job make money flows auditable.
- 05
A 'wrong tenant' test in every module's test suite — cross-tenant access must return 404, not data.
What it does
- Desktop till (Electron) with device sessions, auto-update and offline mode
- Kitchen, bar and queue screens with realtime updates over WebSockets
- Menus, modifiers, recipes, stock, suppliers and purchase orders
- Staff roles with custom permissions, shifts, attendance and day close
- Loyalty programs with tiers, rewards, challenges and two-person approvals
- Fiscal receipts with offline variants and retries
- Scoped API keys, guest OTP login and a versioned API for client mobile apps
- Schema-driven CMS, email designer and segment-based campaigns
Results
- Data models
- 181
- API endpoints
- ~936
- Deployable apps
- 6
- Background queues
- 20
- 181-model domain and ~936 API endpoints delivered in about four months by a two-person core team
- Six deployable apps and ten shared packages in one typed monorepo
- The coffee-chain app in this portfolio runs entirely on its public APIs
Stack
- NestJS 11
- Prisma 6
- PostgreSQL
- Redis
- BullMQ
- socket.io
- React 19
- Electron
- Next.js 16
Integrations
- Ameria
- Idram
- Fiscal receipts
- FCM & APNs
- SMS
- SMTP
Details, names and visuals are generalised to respect client confidentiality. Happy to walk through the architecture in a call.
Have a product in mind?Let's build it.
Tell me about your idea, your product or your team. I usually reply within one working day.