SaaS · 2025 · Chicken Master
Chicken Master
In progressMulti-tenant delivery SaaS for a poultry retail chain

Problem
Poultry retail runs on phone calls and paper: prices change every morning with the mandi rate, orders get relayed by voice, and nobody knows where a rider is until he arrives.
Solution
A multi-tenant platform where each shop runs its own storefront — real-time orders over Socket.IO, live GPS rider tracking, loyalty points, and product prices that recalculate automatically from the daily mandi rate.
Outcome
- TODO: shops onboarded and orders processed per day
- TODO: average dispatch-to-delivery time vs. the old phone workflow
- One mandi-rate entry each morning reprices the entire catalogue — no per-product edits
Background
Fresh chicken is priced against the mandi (wholesale market) rate, which changes every morning. A retail chain selling it deals with a pricing problem most e-commerce platforms never see: the whole catalogue reprices daily, and a shop that forgets is either losing margin or overcharging customers by lunchtime.
Order-taking had the same problem at a smaller scale — phone calls written into notebooks, riders dispatched by shouting across the shop, and no answer to "where is my order?" other than calling the rider.
What I built
Chicken Master is a multi-tenant SaaS platform: one deployment, many shops, each with its own catalogue, staff, riders, and customers.
Four roles, four surfaces
- Admin owns the platform: shops, tenancy, and global settings.
- Manager runs a shop: enters the day's mandi rate, manages products and stock, watches live orders and rider positions.
- Rider gets a dispatch queue and shares live GPS while on delivery.
- Customer browses today's prices, orders, tracks the rider on a map, and collects loyalty points.
Real-time by default
The order lifecycle — placed, accepted, dispatched, delivered — is pushed over Socket.IO to every party that cares about it. A manager sees new orders appear without refreshing; a customer watches their rider move on Google Maps.
Mandi-rate pricing
The manager enters one number each morning — the mandi rate per 40 kg of live bird — and every product's price derives from it by its own formula: Mandi ÷ 26.5 for chicken with pota kaleji, Mandi ÷ 40 + 19 for live birds, Mandi ÷ 18 for boneless cuts, with fixed prices for the few items that don't track the market. The calculated rates render as a preview before they're published, so the manager sees the whole catalogue's new prices as a list and confirms once. Nobody edits prices product by product.
Urdu first, not Urdu later
The people using this all day are shop staff, managers, and riders in Faisalabad, and the interface is built for them: every navigation item carries its Urdu label beside the English one, the daily log is labelled in Urdu, and the check-in fine policy and customer notices are written as Urdu prose. The customer storefront shows each product's Urdu name under its English one. This isn't a localisation layer bolted on at the end — it's how the screens were designed.
The day's stock, and what it's worth
Before orders start, the shop logs what arrived: live weight, bird count, and the average weight per bird that follows. The previous day's leftover stock gets revalued at today's mandi rate, so the shop can see immediately what the overnight rate move cost or earned it — a line that reads "difference from the mandi change" in rupees. Shrinkage, waste (kachra, charbi, pallay), and a daily profit/loss report close the day out.
Items go out of stock, and the shop knows
A shop that sells out of boneless at 11am shouldn't still be taking orders for it. Items carry a three-way status — available, finished, unavailable — that a manager flips with one tap, and the customer storefront follows immediately.
Ordering the way people actually buy chicken
Customers don't order "1 kg chicken", they order a bird cut a particular way. Products carry cutting options — 4, 8, 12, 16, 18, 20 and 24-piece, plus Karahi, Boti, and Normal cuts — selected at add-to-cart, so the order that reaches the shop floor is one the butcher can act on without a phone call.
Staff attendance with money attached
Workers check in and out against a target time. Arriving before 08:30 earns an Rs.20 daily bonus; 08:45 to 09:00 is a Rs.15 fine, and past 09:00 it's charged pro-rata against the daily wage. The month's bonuses and fines net to a per-employee balance, so the arrangement staff already had informally is simply visible and arithmetically consistent.
Stack notes
React + Vite + TypeScript on the front, Node.js/Express for the API and Socket.IO gateway, Supabase (Postgres + Auth) for data and identity. Tenancy is enforced at the database level — every row carries its shop, and access is scoped by role.
Status
In active development at chickenmaster.net.
TODO: add current numbers — shops live, daily order volume, rider count.
Screenshots








Running a similar operation?
I build systems like this end to end — from the data model to the day-to-day screens your staff actually use.
Get in touch