← Work in progress 2023

Tunza Nasi — a pharmacy management platform for Tanzania

As CTO and Director of Technology & Digital Health at Omnexus Pharma Solutions Hub, I single-handedly engineered Tunza Nasi — a batch-aware, multi-tenant pharmacy management platform trusted by 25+ pharmacies across Tanzania, each on its own isolated, encrypted database.

phplaravelmysqlstancl-tenancyspatie-permissionbootstrapchartjsaws-s3

The problem

Most independent pharmacies in Tanzania run on paper or on generic point-of-sale software that doesn't understand how pharmacies actually work. Medicines expire in batches, stock has to be traceable batch by batch, and a single sale often draws from several batches at once. Generic tools miss all of this; so expired stock slips through, losses pile up, and there's no clean record when it's needed. On top of that, pharmacy owners are (rightly) wary of putting their business data onto a shared cloud system they don't control.

What I built

I'm the CTO and Director of Technology & Digital Health at Omnexus Pharma Solutions Hub, a pharmacist-led firm working across regulatory affairs and digital health. Our flagship product is Tunza Nasi, and I engineered and designed the entire platform.

Tunza Nasi didn't start as a product. It began in July 2023 as the Tanga Gateway Pharmacy System; a bespoke build for a single pharmacy. Once I saw the same problems repeating from one pharmacy to the next, I productized it into the multi-tenant SaaS it is today, now under Omnexus Pharma Solutions Hub Limited.

In plain terms, it runs a pharmacy end to end: a drug and batch catalogue with expiry tracking and write-off workflows, a point of sale that handles multi-line, multi-batch transactions with printable receipts, purchasing and supplier management, low/out-of-stock/expiring alerts, and reporting and analytics across sales, inventory, and finances; all behind role-based access tuned to each staff role (owner, dispenser, sales).

What it looks like

Tunza Nasi dashboard

Secure per-pharmacy login Inventory health overview Batch bin card Stock movement Procurement Sales analytics Financial overview

How it works

The architectural decision I'm proudest of is isolation. Every pharmacy runs on its own database; no shared tables, no shared data between clients — identified by its own subdomain (*.tunzanasi.online) via stancl/tenancy. A small central database holds only the tenant registry and subscription metadata. Backups run nightly, encrypted, and stored off-site on S3, while new accounts are provisioned directly by us instead of through open self-service signup. For a pharmacy owner, their data is one of their most valuable assets, so that trust-first approach is as important as any feature the system offers.

Another design principle I'm particularly happy with is that the platform is audit-centered. Every critical action is built with accountability in mind, making it easier to trace changes, review system activity, and maintain confidence in the integrity of business records. Combined with a fine-grained RBAC layer with about 50-plus permission taxonomy with a super-admin bypass; each user sees only the data and functionality they need to do their job.

Stack: PHP 8.1 · Laravel 10 · Sanctum (auth) · Spatie Permission (RBAC) · stancl/tenancy (DB-per-tenant) · Spatie Backup (→ S3) · Blade server-side rendering · Bootstrap · server-side DataTables · Chart.js · database-backed queues for backups and notifications · Laravel scheduler for nightly jobs and health checks.

Results

More than 25 pharmacies across Tanzania run on Tunza Nasi today, on Starter, Professional, and Enterprise plans — among them Sheerah Pharmacy, Karafuu Pharmacy, and JJ Medicare.

For those pharmacies the day-to-day change is concrete: expiring batches are flagged weeks ahead instead of discovered at the counter, every sale is traceable to the exact batch it came from, and an owner can see live stock, sales, and finances that used to live on paper or in someone's head.

At Sheerah Pharmacy, the analytics changed real decisions. A sales-by-hour view showed almost no business between 2am and 5am, so they stopped opening in that window; and the slowest-moving-product report stopped them from re-ordering stock that wasn't selling. Their feedback: the system is easy to navigate, and the analytics are genuinely useful for running the business.

What I learned

Building health software shoulder-to-shoulder with pharmacists changed how I engineer. The constraint that actually matters isn't the feature list, but it's trust. Data isolation, reliable backups, and disciplined provisioning aren't back-office chores here; they're the reason a pharmacy owner is willing to run their business on your system at all. It's the same lesson my data work keeps teaching me: the hard part is rarely the code, it's earning the right to be relied on.