Front-desk software for kids' play centers. Families check in by phone number, children are billed by the minute, cafeteria sales land on the same bill, and parents get a WhatsApp message when their child arrives and leaves.
Marah runs a play center's front desk. Families check in by the parent's phone number and children are billed by the minute. Cafeteria items go on the same bill, and parents get a WhatsApp message when their child arrives and leaves. Behind the desk, the owner sees income, expenses and returning families.
POINT OF SALE — CRM — WEB APP
- Client
- TODO: client name, or "A kids' play center in Iraq" if they prefer not to be named
- My role
- Full-stack engineering and product design, with a frontend collaborator.
- Duration
- April – May 2026
- Tools
Overview
Marah is a point-of-sale and customer system for kids' play centers. It runs the front desk: check-in, timed visits, checkout, cafeteria sales and invoices. It also gives the owner the financial picture behind it.
I built it full-stack, working with a frontend collaborator.
Context
A play center's front desk handles three things at once: families arriving and leaving, a clock running for every child, and a cafeteria selling on the side. Parents either stay with their child or leave them for a while, and the price depends on which.
Marah covers the whole loop: • reception, active visits and checkout • cafeteria and invoices • expenses and reports • staff accounts • a profile for every family
Problem
At peak times the desk is a rush of families, timers and cash. On paper, time gets estimated, cafeteria sales get forgotten, and nobody can say which families come back or what the day actually earned.
The owner needed three things: bills that are right to the minute, every sale on one invoice, and a real record of income, expenses and customers.
Constraints
Fast at peak. The desk can't wait for page loads, so every desk action happens without a reload.
Non-technical staff. Every action has to be one obvious step.
Simple to run, on standard, affordable hosting.
WhatsApp is how parents talk. Messages must work with local phone-number formats.
Architecture
A PHP web application with a clean separation between data, logic and screens.
The desk screens behave like a single-page app. Searching families, starting and ending visits, and adding cafeteria items all happen instantly, and the list of active visits stays current on every screen. Light and dark themes, and instant feedback with clear alerts and sounds.
Key decisions
Bill by the clock, not by guesswork. There are two ticket types: parent stays, at a fixed price, and drop-off, charged by the hour and minute. The server calculates both at checkout from recorded times, never from an estimate.
One bill per family, and one bill for everything. Siblings are grouped into a single family bill. The cafeteria till adds products to the open visit, deducts stock automatically, and prints them on the same invoice as the tickets.
Tell parents automatically. Parents get a WhatsApp message when their child checks in, and another with the invoice details when they leave.
Find a family in seconds. Reception searches by the parent's phone number as they type, so staff can confirm who they're talking to.
Know your families. Each parent has a profile with their children, full visit history and lifetime value, one tap from WhatsApp.
Hard problems
Discounts that skewed the reports. Discounts weren't reflected consistently in the financial reports, so income looked different depending on where you read it. The calculation was corrected so every report matches the invoices.
The owner couldn't trace withdrawals. Cash taken from the till had no name attached. Expenses now record who withdrew the money, and reports filter by date range and by person.
Security
Sign-in required. Staff sign in to use the system.
Separated roles. Staff run the desk; only admins review invoices, set prices and manage staff accounts.
Protected data. Data access is protected against common attacks.
Result
TODO: where it's running (or "in daily use at [client] since [month]"), and one concrete change at the desk. Example: no more estimated times; every cafeteria sale on the bill.
Stack
Backend: PHP · MySQL Frontend: Tailwind CSS · JavaScript Messaging: WhatsApp
What I'd do differently
Start on a lightweight framework with built-in migrations, so every schema change is versioned rather than applied by hand.
Put automated tests around the billing maths first. Time-based pricing and discounts are where small mistakes cost real money.
Selected projects / Keep exploring
A little more of my work.
FORMA — the coaching platform that keeps an athlete's progress from resetting every program
One system for a fitness coach's whole practice: programming, nutrition, check-ins, payments and chat. Each athlete gets a clear daily plan and a progress record that carries across every training block. Web platform live; athlete app in development.
Nova Store — a point-of-sale system shop owners can trust with their money
Point of sale, inventory and finance for retail shops: checkout to payroll on the hardware a shop already owns, with every amount stored exactly so the month-end numbers always match the receipts.
Mobily — an online store that sells from the same truth the shop counts with
A customer mobile app, a web storefront and an admin dashboard for an electronics and phone retailer, all on one backend that stays in step with the shop's accounting and stock. Live at mobilyiq.com.