In production · 2026
Sales Ops PWA
A PWA that replaced spreadsheets in the sales-meeting cycle of a direct-sales company.
- Business apps




A private PWA for a direct-sales company. It runs the whole sales-meeting cycle — from booking by the call centre, through the field rep's visit, to statistics for management — and the whole team uses it every day.
Problem
Meetings were booked and reported in shared spreadsheets. Statuses drifted apart, field reps had no convenient access from their phones, and management calculated effectiveness by hand.
Solution
An app with four roles — telemarketer, coordinator, sales rep and director — that works on a phone like a native app, with push and email notifications. Attendance and effectiveness statistics calculate themselves, and all business logic lives in one package that the apps cannot bypass.
Screens
- Telemarketer books a meeting
- Coordinator assigns a rep
- Field rep sets the status
- Statistics: attendance and effectiveness
- roles with separate permissions
- 4
- sliding session with a device list
- 48 h
- database migrations, additive only
- 24
Architecture
A monorepo with three parts: the web app (Next.js), a worker for notifications and scheduled jobs, and a core package with the data model and business logic. An ESLint rule blocks database access outside core, so every operation goes through the same validation. Production runs on Docker Compose behind Caddy, with backups and a safe-deployment runbook.
Security
- An append-only sign-in journal protected by a database trigger
- Logins in the journal stored only as HMACs
- A lockout after failed sign-in attempts that survives server restarts
- 48-hour sliding sessions with the option to sign out selected devices






