utsav@homelab: ~/projects/khatiwada-pos, bash
[home] [× back to board]
utsav@homelab:~$ cd ~/projects/khatiwada-pos

KHATIWADA POS SAAS

> U1 · CPU, FROM ONE FAMILY SHOP TO A MULTI TENANT PLATFORM

utsav@homelab:~/projects/khatiwada-pos$ cat README.md

My family runs a small grocery store in Kathmandu. Sales used to live on pen and paper, no product database, no sales history, no way to know what was actually selling. I built a browser based point of sale for it, served from a Raspberry Pi in Sydney over a private Tailscale VPN, and it has been in daily use at the shop since July 2026. This year I took the same codebase and rebuilt it into a proper multi tenant SaaS product, so any small shop owner in Nepal can get their own isolated store on the same platform.

utsav@homelab:~/projects/khatiwada-pos$ ./features --list
▸ Camera based barcode scanning, works on Chromebook and iPhone ▸ Bilingual English / Nepali cashier interface ▸ Live Bikram Sambat calendar and Kathmandu clock ▸ Weighed goods sold per kilogram or litre ▸ Password protected admin panel with CSV sales reports ▸ Isolated Docker container per SaaS customer ▸ Signed token handoff login, no shared sessions between tenants ▸ Master dashboard for onboarding and managing customers
utsav@homelab:~/projects/khatiwada-pos$ docker inspect khatiwada-pos --format stack
RUNTIMEPython · Flask · SQLite FRONTENDPlain HTML / CSS / JavaScript, no framework ORIGINAL HOSTRaspberry Pi 4, Sydney, family shop only SAAS HOSTOracle Cloud VPS, Docker per customer, Caddy reverse proxy AUTHSigned short lived tokens handing a login off to its own container SECURITYRate limiting, CORS allowlist, security headers, no wildcard origins
utsav@homelab:~/projects/khatiwada-pos$ git log --reverse --milestones
2026-07-02Project start. Flask and SQLite scaffold, cashier screen with scan, search and running bill, admin panel, quick tap categories, Quick Add for unknown barcodes 2026-07-03Hardened and deployed. A 54 check test suite, Dockerised with gunicorn, live behind Caddy with real HTTPS over Tailscale 2026-07-04Made it Nepali. English/Nepali toggle, live Bikram Sambat date, Nepali product names, pinned quick buttons 2026-07-09Full UI redesign, weighed and measured goods generalised to litres, automatic cache busting for shop devices 2026-07-20Commercialisation begins. Landing site and login flow scoped out to turn the single family deployment into a SaaS product 2026-07-22Login flow live. Store name plus password, signed handoff token, redirect into the customer's own container 2026-07-25Forgot password flow shipped, plus real security hardening: rate limiting on auth routes, CORS allowlist, no more public .git folder 2026-08-06Master dashboard, health monitoring and VPS resilience work all live. Ongoing, still the primary source of truth for the family shop plus the pilot SaaS tenants
utsav@homelab:~/projects/khatiwada-pos$