Project 01 Retail / Point-of-Sale SaaS
Zendtri POS
A multi-tenant retail operations platform for Philippine SMEs — covering point of sale, inventory, purchasing, workforce, expenses, customer programs, online ordering, and subscription billing across web, iOS, and Android.

The brief
Zendtri is a multi-tenant retail operations platform for Philippine SMEs. I designed and built the product across point of sale, inventory, purchasing, workforce, expenses, customer programs, online ordering, and subscription billing—delivered across web, iOS, and Android.
The challenge
Off-the-shelf POS tools are usually either too expensive and enterprise-heavy for a neighborhood café, or too simplistic to handle real inventory — unit conversions, recipe-based deduction, multi-branch stock transfers. Filipino SMEs needed something that handles multiple branches under one business without data bleeding between them, gets inventory math right (buying flour by the sack but selling bread by the piece), supports local payment rails and peso pricing, scales cost via self-serve subscription tiers, and works on any device.
System scope
- 01SellingPOS terminal (desktop, tablet-landscape, and mobile layouts), promotions, transactions and receipts
- 02Inventoryitems, categories, stock levels, purchase orders, branch-to-branch stock transfers, low-stock alerts, barcode and label printing
- 03Managementmulti-branch, users and roles, customers, suppliers, cash management, activity and audit log
- 04Reportingsales reports, dashboards, PDF and Excel export
- 05Billingsubscription plans, PayMongo checkout, plan-gated feature limits
Architecture
- React
- TypeScript
- Vite
- Tailwind CSS
- TanStack Query
- Deno
- Supabase
- PostgreSQL
- Interface
- React · TypeScript · Vite · Tailwind CSS · TanStack Query
- Data & backend
- Supabase · PostgreSQL · Deno
- Platforms & delivery
- Capacitor · PayMongo
Approach & decisions
A single React and TypeScript application, backed by Supabase, shipped to web and to app stores via Capacitor. The core engineering focus was on three systems that had to be correct, not just functional: organization-scoped access controls, server-authoritative inventory, and plan-based feature gating. Organization-scoped access is enforced through PostgreSQL row-level policies, keeping each tenant's data isolated at the database. Every quantity-affecting transform — unit conversion, recipe deduction, sale creation — runs inside SQL functions on the server, keeping the sale, sale_items, payments, and inventory-movement chain consistent. Subscription plans store capabilities as JSONB feature flags and numeric limits, and the server re-validates every limit and returns HTTP 402 if a request slips past the client gates — so re-tiering a feature is a data change rather than a code deploy.
Outcome
Zendtri ships as one React and TypeScript codebase to web, iOS, and Android, with organization-scoped access enforced in PostgreSQL, all inventory math computed server-side in SQL, and subscription features gated by data-driven JSONB plan flags rather than code deploys. The result is a retail operations platform where correctness lives at the database layer — a single source of truth that stays consistent across every client and form factor.
- Organization-scoped access controls via PostgreSQL row-level policies
- Server-authoritative inventory math via SQL RPC functions
- Data-driven subscription billing & plan-gating engine
- MVVM architecture across separate desktop and mobile views
- Cross-platform delivery to web, iOS, and Android via Capacitor
- PayMongo checkout integration
Hunter Vault
View case studyBuilding a product across web and mobile? Discuss an opportunity
