skip to content
ian@nairobi:~$

Prolox

A retail platform I have built and rebuilt since 2020 — a POS, a storefront, and a CRM, all running on one 2 GB server.

Client
Prolox Solutions
Role
Intern → Product Developer → Sole author & maintainer
Period
2020 — Present
  • 1M+

    transactions processed

  • 1,750+

    customers served

  • 2 vCPU / 2 GB

    whole-platform VM footprint

  • Author

    maintainer and builder

Problem

Prolox runs a multi-store retailer in Nairobi: a Windows POS for cashiers, a public storefront with self-checkout, and a CRM for stock, stores, and reporting. I started as an intern in December 2020, when sales were still a manual workflow. I came back in 2023 to build the transactional core — an Electron POS, a Next.js storefront, and a REST API on MongoDB. That stack handled over a million transactions for 1,750+ customers, and by 2025 it had outgrown itself. I rebuilt the platform on my own, without closing the shop for a day, onto a single 2 vCPU / 2 GB server. I maintain it.

Approach

The backend is Spring Boot 4 and Java 21 — 28 controllers across 20 domain modules — on PostgreSQL 16 with 24 Flyway migrations. The 2 GB budget decided most of the design. Email goes through a Postgres outbox rather than Redis or a queue: one fewer process to run, and a send either commits with the business write or does not happen. Receipt PDFs render in a small Node sidecar with no internet access at all, called off the request path.

The rest is unglamorous and deliberate. Argon2 hashing with a bcrypt fallback so migrated accounts still log in. CSRF double-submit cookies, and sessions scoped per client so the POS cannot use a CRM token. Server-sent events for live sales. Caddy for HTTPS and health-checked deploys. And a parity harness that replays requests against the old system and diffs the answers, so the migration cannot quietly change behavior.

The 2 GB budget decided most of the design.

Outcome

The cutover landed without anyone noticing, which is the whole point of the parity harness. The platform in production today — Spring Boot backend, Next.js storefront, React CRM, self-updating Electron POS, PDF sidecar — runs on the single server it was designed for, with nightly backups off-box. Intern in 2020, product developer in 2023, sole author and maintainer now.