Abacus
CurrentI run a multi-tenant loyalty platform in production — one codebase serving 12 white-labelled B2B clients across a NestJS backend, React admin, and React Native mobile app. Owner of the platform end-to-end: schema, business logic, CI/CD, production deploys, and on-call.
What I do
- Ship features across backend, web, and mobile from a single codebase — with per-tenant customization baked in at build time (config-driven, not runtime-forked).
- Onboard new tenants zero-to-Play-Store end-to-end: database seeding, per-tenant branding, mobile CI, backend cutover, portal smoke tests. Encoded the whole process as an idempotent script plus acceptance suite so bug classes I hit once can't recur.
- Own production deploys — self-managed VPS, Docker Compose per stack, nginx edge routing, TLS, database migrations, incident response.
- Build security-critical flows end-to-end: authentication, KYC pipelines (manual review and digital verification against government APIs), payment payout integrations with HMAC-signed clients, async poll workers, and refund ledgers.
- Enforce tenancy invariants across the codebase: row-level org scoping, append-only money ledgers, and subdomain-scoped credential routing so tenants can't leak into each other's data.
- Manage a fleet of tenant release branches — cross-branch propagation, cherry-pick audits, staged rollouts, per-tenant APK builds.
- Automate the boring parts of my own job: acceptance test suites, CI/CD workflows, release scripts, over-the-air JS update delivery for post-launch fixes.
Systems I own in production
- Multi-tenant NestJS backendPooled Postgres, row-level tenancy, BullMQ workers, Redis cache
- Tenant admin web consoleRole-based access, tenant-isolated content
- React Native mobile appPer-tenant branding, deep-linking, force-update gating, OTA JS updates
- Payment payout pipelineAsync retry, reconciliation, subdomain-scoped credentials
- Automated tenant onboardingIdempotent orchestrator plus acceptance suite covering every recurring failure mode
- Cross-branch propagation auditSignals which fixes have landed where across the 10+ branch fleet
- Self-hosted OTA deliveryShips JS-only fixes fleet-wide in minutes, no APK rebuild cycle
What running this has taught me
- Multi-tenant architecture in the real world: when to pool, when to isolate, and how to move between the two without a migration outage.
- Ownership discipline: writing durable runbooks and acceptance tests so knowledge outlives any single session or engineer.
- Production risk management: idempotency, rollback paths, blast-radius reasoning, atomic-transaction hygiene, and why “it compiled” is the beginning of testing rather than the end.
- Cross-stack debugging: the same root cause wears different masks on backend, web, and mobile — the fix belongs at the right layer, not the closest one.
- Solo-operator throughput: knowing when to automate, when to grind, and when the right move is to write the tool instead of doing the work.




















