Swiss Premier
A mobile and web debt-collection platform for field collectors who work door-to-door with no signal — offline-first payment logging, on-device PDF receipts, and an admin dashboard that turns the data into routes and reports.
A debt collector spends the day on the street, knocking on doors. They take a payment, they note a visit, they hand over a receipt — and they do it standing on a sidewalk where the signal drops to nothing. If the app needs a connection to record that payment, the app is useless. The money has changed hands either way; the software’s only job is to never lose the record of it.
Swiss Premier is the platform built around that reality: a mobile app for the collectors in the field, and a web dashboard for the office that assigns their routes and reads back everything they captured.
What it does
The field app (mobile). Each collector opens the app to the clients on their assigned route. For every visit they log what happened, register a payment (abono) against the client’s outstanding debt, and generate a printed-style receipt on the spot — all from a phone, on Android or iOS. The app tracks the running debt per client, keeps a history of payments, and lets the collector edit or reprint a past receipt. It is built to keep working when the connection doesn’t.
The admin dashboard (web). The office side manages the whole operation: creating routes, assigning collectors and clients to them, registering and editing clients, and reviewing payment activity. From there, supervisors generate the reports the business actually runs on — daily collected vs. not-collected per route, weekly route status, per-client payment history, specific cut-off reports and client backups — exported as downloadable documents (PDF/CSV). Access is gated by role, so collectors and supervisors only see what they should.
Under the hood
Offline-first, by design. The mobile app treats the network as optional. Client data and the collector’s session are persisted locally through Ionic Storage, and critical state is written redundantly across multiple storage layers with an integrity check that compares them to catch drift — so a dropped connection, a killed process or a dead battery doesn’t erase the day’s work. A registered service worker caches the app shell so it launches and runs without a round-trip to the server. When the device is back online, the captured payments and visits reconcile against the backend.
Receipts generated on the device. The receipt isn’t a server render waiting on a connection — it’s built right there on the phone with pdfMake, then written to the device filesystem through Capacitor and either opened for printing or shared via the native share sheet. A collector with zero bars can still hand a customer a proper receipt. Platform branches handle the difference between native (write file, open with the OS) and web (direct download) cleanly.
The dashboard turns capture into decisions. On the web side, reports are requested as binary blobs and streamed straight to a file download, so heavy report generation stays off the UI thread and lands as a ready-to-share PDF/CSV. Route management is the connective tissue: the office assigns clients and collectors to routes, and those assignments are exactly what scopes each collector’s app to the right doors. The same domain — clients, debts, payments, routes — is modeled consistently across both the Ionic app and the Angular dashboard.
The stack
- Mobile — Ionic 8 + Angular 18, packaged with Capacitor for Android and iOS; Ionic Storage (SQLite-backed) for offline persistence, a service worker for offline launch, pdfMake for on-device receipts, and Capacitor Filesystem / Share / File Opener for handling and printing them.
- Web — Angular 18 admin dashboard with Angular Material and Tailwind CSS, pdfMake for document output, and role-guarded routing.
- Platform — Firebase (auth, distribution and project services), with a NestJS backend serving both clients over a shared REST API.
Worth noting
Swiss Premier is in production and in daily use — collectors run their assigned routes from the mobile app while the office monitors them through the dashboard. It’s distributed privately to the collection team rather than the public app stores. The backend was a team collaboration; I built the Ionic + Angular mobile app and the Angular admin dashboard, owned the UX/UI, and handled the deployment of both. The interesting problems on that side weren’t flashy: making payment capture survive a dead connection, generating a trustworthy receipt on a phone with no signal, and shaping a route-and-debt domain into an interface a non-technical collector can fly through one-handed on a doorstep. That’s the work — software that has to be right in the exact moment the network isn’t there to help.
Coffee & talk?
Like what you just read? I build products like this end to end — and I'm always up for a conversation. Let's talk about yours, or just trade notes over coffee.