
Daily command center
Executive KPI cockpit
Active contracts, overdue receipts, cash collection, and expiring policy signals stay visible in one fast scanning layer.

AssurPro replaces unencrypted early-2000s Access and Firebird software with one encrypted desktop platform for contracts, receipts, payments, and production reporting at Moroccan insurance agencies.
Insurance operations platform2025Design, architecture, buildShipped

Daily command center
Active contracts, overdue receipts, cash collection, and expiring policy signals stay visible in one fast scanning layer.

Policy lifecycle
The register tracks every contract across six product types and four payment frequencies, flagging renewals before they lapse.

Customer movement
Every quittance is auto-generated and split by payment frequency, with paid and pending receipts tracked in one feed.

Cash visibility
Every payment is recorded as cash, cheque, or bank transfer and rolled into a daily caisse total in Moroccan dirhams.

Agency performance
Collected, outstanding, and pending totals render as charts, with CSV export for anything that needs to leave the app.

Data integrity
Every record is soft-deleted and every change is written to an audit log with the user, timestamp, and a before/after diff.
Module 01
Module 02
Module 03
Module 04
Module 05
Module 06
Module 01
The renderer gets zero Node.js access; every capability crosses a typed IPC channel, so a compromised UI can't touch the database.
Module 02
TypeScript strict mode catches data-shape mistakes at compile time, before they reach a database holding real client records.
Module 03
Every form is schema-validated twice, once for UX, again in the main process before it reaches the database.
Module 04
The database is encrypted with SQLCipher and the key lives in the OS keychain, so a stolen laptop yields nothing readable.
Module 05
Attestations and quittances render as PDFs in French or Arabic, right-to-left, with fonts embedded so layout never depends on the machine.
Module 06
A tested, linted pipeline packages every build into an NSIS Windows installer, ready for agency rollout.
GestAssur 2004 (clients.mdb)
The answer
CSV export
Separator detected
Columns mapped
Rows validated
Import summary
No Node. No filesystem. No database. The interface can only ask.
Every channel enumerated as domain:action. Nothing dynamic, nothing implicit.
Business logic, authorization, and audit live here. Nothing else may write.
SQLite sits behind an interface, so the storage engine can change without touching a service.
API implementation (V2)
Same interface, different storage engine. Nothing above this line would need to change.
Zero Node.js, zero filesystem, zero database access. The interface can only ask.
Every IPC channel enumerated and typed. No dynamic channels, no leaks.
Zod re-validates every input; RBAC checks every call; audit logs every write.
AES-256 encrypted at rest, key held in the OS keychain. Soft deletes only.
Full local copy on every PC
Each PC holds the complete encrypted database and keeps working fully offline if the server is unreachable.
Push, then pull, every 5 minutes
Each client pushes its local changes to the server, then pulls what's new and upserts it.
Last write wins
When two PCs edit the same record, the one with the newer updated_at timestamp wins.
Shared token, LAN only
Every request carries a shared token in the x-sync-token header. Wrong token, no data.
PC Principal
Serveur, port 4567
PC Secondaire 1
Sync, 5 min
PC Secondaire 2
Sync, 5 min
PC Secondaire 3
Sync, 5 min
Three legal documents, generated locally
Attestation d'assurance, quittance de prime, avis d'échéance. Rendered in the main process, never in the browser.
French and Arabic, with real RTL
Direction flips on the document root, not just text alignment. Fonts embedded so output is identical on any machine.
Templates live in the database
Agencies edit their own document layouts from Settings, with live preview. No redeploy to change a letterhead.
Attestation d'assurance
Agrément ACAPS N° 000
Cost 01
A ~2.7 MB renderer bundle and a per-machine install. Acceptable: these offices have unreliable internet and the data must never leave the building.
Cost 02
No central analytics, no remote support access. In exchange, an agency's client records physically cannot leak to a server I control.
Cost 03
Concurrent edits to the same record lose data. With 3–6 staff on one office network editing different clients, the collision rate does not justify the complexity.
Cost 04
No recurring revenue. But agencies replacing software they bought once in 2004 do not trust a monthly bill, and the sale closes.
Cost 05
A SmartScreen warning on first run, handled during install. The certificate cost was not justifiable before the first sale.
I kept V1 narrow because these agencies needed a working replacement, not a feature list.
Each of these was a deliberate cut with a reason, not a gap.