MITANG MOP — Dealer Price-List System
A private B2B platform for a real IT hardware distributor: prices edited in a Google Spreadsheet appear live on ~500 approved dealers’ phones within seconds.
Timeline
Self-initiated
Role
Full Stack Developer
Team
Solo
Status
CompletedTechnology Stack
Key Challenges
- Keeping the owner’s existing workflow — the spreadsheet is the admin panel
- Security rules so only approved dealers can read prices
- Replacing SMS OTP ($25–250/month) with free passwordless email OTP
- Syncing spreadsheet edits to every dealer’s phone within seconds
- Monorepo discipline with shared TypeScript contracts across five packages
Key Learnings
- Design for what the user already knows
- Shared TypeScript contracts mean a type changes in exactly one place
- A security-gate test suite in CI blocks dangerous merges before they ship
Overview
MITANG MOP is a private B2B platform I built for a real IT hardware distributor. The distributor's staff edit prices in a Google Spreadsheet all day; approved dealers see them live in a mobile app. It is not public — access is gated by admin approval.
The core design decision: the owner never has to learn a new tool. The spreadsheet he already uses is the admin panel for prices.
What I Built
- Customer app — React + Vite + Capacitor, shipped as both a website and a signed Android APK
- Admin panel — approvals, user management, insights, push campaigns and sync monitoring
- Backend — Firebase (Firestore, Cloud Functions, FCM, Hosting) with security rules where only approved dealers can read prices; pending, blocked or anonymous users cannot
- Sheet sync — a Google Apps Script + Cloudflare Worker pipeline: staff edit the sheet, changes are parsed, diffed into price history, and pushed to every dealer's phone within seconds
- Free login — passwordless email OTP (Clerk bridged to Firebase through the Worker), replacing SMS OTP that would have cost $25–250/month
- CI/CD — every push deploys a demo environment, merges to main deploy production; a security-gate test suite blocks any merge that would let unapproved users read prices
Impact
Replaced a daily manual chore — exporting and broadcasting price PDFs — with a zero-effort flow. The whole system runs at roughly $1–5/month for ~500 dealers.
What I Learned
Design for what the user already knows. Also monorepo discipline: shared TypeScript contracts across five packages, so a type changes in exactly one place.
Links
- Case study & build notes: mitangs.tech
