Skip to content
Commerce SystemsD-01Live in production

TallyhubGH

Inventory, point of sale and business operations for retail and wholesale

Timeline
2025 — present
Availability
tallyhubgh.com
Repositories
6
Role
Product architecture, data model, full-stack implementation, desktop packaging
Summary
A multi-tenant commerce platform that keeps selling when the internet stops — offline-first POS, warehouse-scoped inventory, credit sales, purchasing, reporting and on-device AI, shipping as a web app and a Tauri desktop binary from one codebase.
61
Product screens
pages/ routes in the application
572
Server routes
Nitro endpoints and handlers
76
Data models
Prisma schema models
405k
Lines of TS + Vue
measured across the dashboard tree
220
Composables
shared reactive logic units
2
Shipping targets
web app and desktop binary
tallyhubgh.comLive capture

The live product, running here. Click the window to use it, or open tallyhubgh.com in a new tab.

What it is

TallyhubGH is the operating system for a trading business, live at tallyhubgh.com. A shop, a wholesaler or a chain of warehouses signs up, loads its catalogue, and gets a till that works on a counter, a stockroom that knows what is actually on the shelf, and a reporting layer that explains where the margin went.

It runs as three products against one data model: the dashboard (the logged-in application), the platform site (marketing, authentication, onboarding, docs and sales booking), and the admin panel (tenant operations, impersonation, plan management). Companion apps cover barcode scanning and customer-facing views.

The hard parts

Most retail software is a CRUD app with a payment button. The difficulty in TallyhubGH sits in four places.

Selling offline. Power and connectivity are not guaranteed where this software is used. A till that refuses a sale because a request timed out is worse than no till. So the local database is the source of truth: sales are append-only rows with client-generated UUIDs, written locally first and replayed to the server through an idempotent queue. Every record carries a pending | synced | failed status and a device id, so a retry can never double-charge and a reconciliation pass can always explain a divergence.

Warehouse scoping. A price, a stock level, a credit limit and a session all belong to a location, not to a tenant. That scoping is enforced in the query layer rather than the interface, because a filter that lives in a component is a filter that will eventually be forgotten. Switching warehouse re-scopes the entire application, including the open POS session.

Two screens, one sale. The cashier drives a dense keyboard-first terminal while the customer watches a clean read-only display update in real time. Same route, two roles: state travels over BroadcastChannel when both screens share a browser profile, and over a WebSocket relay with rooms keyed by tenant and warehouse when they do not.

Money paths deserve invariants. Refunds, voids, held sales, credit settlements and receipt reprints all mutate ledgers that someone will audit. They are gated behind manager PINs, written with audit trails, and modelled so that a partial failure leaves a recoverable state rather than a wrong number.

Architecture

The application is a Nuxt 3 SPA over a Nitro server, with Prisma against PostgreSQL in hosted mode and SQLite through the Tauri SQL plugin on the desktop. A platform utilities layer abstracts the difference, so feature code never asks which runtime it is in.

  • State — Pinia stores per domain, with 220 composables carrying the shared reactive logic: sessions, warehouse scope, cart maths, sync status, printing.
  • Realtime — Nitro plus crossws for notifications and the customer display, with a publisher/subscriber relay so a display can be a separate process or device.
  • Auth — JWT sessions, bcrypt credentials, WebAuthn passkeys, manager PIN gates, idle lock screens, and an audited impersonation exchange for platform support.
  • Documents — invoices, receipts and label templates rendered for both browser printing and hardware receipt printers.
  • Billing — plan entitlements evaluated server-side, with a blocked-state screen rather than a half-working app when a subscription lapses.

On-device intelligence

TallyhubGH answers questions like “which products lost margin last month?” without sending business data anywhere. A quantized model loads into a web worker through WebLLM, translates the question into a constrained query against a described schema, validates it before execution, and renders the answer as a chart or a summary card. No per-query API cost, no data leaving the device, and it still works offline — which is the whole point.

Desktop

The installable surface is a Tauri 2 desktop binary for macOS, Windows and Linux — deep-link handling, a draggable native window, custom URL schemes to launch from the web app, and local SQLite. The service worker is unregistered on purpose: offline selling is the local database and the replay queue, not a cached PWA.

Details worth mentioning

  • 32 themes, switchable at runtime and persisted in a cookie so SSR renders the right one on first paint.
  • Barcode scanning through @zxing/library, sharing a decoder with the scanner app.
  • Skeleton states for every dense view — a table that reflows twice looks broken.
  • Guided tours and quick-action palettes, because operators are trained in minutes.
  • Documented sync reconciliation plan, offline algorithm and dual-screen protocol kept in the repository next to the code they describe.
  • A partner programme that pays 20% of a referred business’s subscription for twelve months, 30% from the eleventh referral onward, cashed out in cedis through Paystack. The rates are the published ones — not rounded up for this page.
TallyhubGH · Partner programmeLive · paid in cedis

Refer a shop. Earn on the months they pay.

The commerce platform on this site has a partner programme. Share a code, and when a referred business subscribes you take 20% of what they pay — 30% from referral 11 onward — every month for 12 months, tracked live.

Free to joinLocal GHS payoutsNo minimumsNo cap
  1. 01

    Create an account

    Free. You get a unique six-character code. You do not need a TallyhubGH subscription of your own.

  2. 02

    Share the code

    A link, a QR code, WhatsApp, or the code typed at registration. Sign-ups show on the dashboard immediately.

  3. 03

    Earn on the months they pay

    Commission starts when a referred business subscribes. Cash out to MoMo, a bank or a card, in cedis, through Paystack.

Accountants

Clients already ask what to use.

POS and IT vendors

You are already installing the hardware.

Consultants

Stock control comes up in every engagement.

Market and association leads

One conversation reaches dozens of traders.

Students and campus reps

A link, a QR code, and the shops around you.

TallyhubGH merchants

The shop next door will ask what you run.

partner.tallyhubgh.com

Work it out

Real plan prices. Real rates. Nothing here is rounded up to look better.

10

One more referral unlocks 30% on everything after

What they subscribe to

What you would earn

GH₵350

every month, once they are all subscribed

GH₵4,200 over the 12 months each one pays

Silver · 20%
10 × 20% · GH₵350

Referrals 1 – 10

Gold · 30%
Unlocks at referral 11

Referral 11 and beyond

An estimate, not a promise: you earn on the months a referred business actually pays. A cancel in month three pays you for three months. The rest keep running.

Next product
Kernvo

Core banking for savings-and-loans companies and rural banks