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.

View all work

Have a project in mind?


Get in touch