Skip to content
BENAA homeالعربية

All work

Healthcare · 2026

Clinic management system for physiotherapy and slimming

Dr. Mohab’s clinic treats clients in two sections, physiotherapy and slimming, with one reception, a set of treatment devices and one cashbox. We built the system its staff work in all day: each client’s file, the day’s bookings by hour, packages paid in parts, the money that comes in and goes out, and the stock of supplies. It is in Arabic from the first screen, and it runs on the clinic’s own server.

Built by

Tech lead
Client
Withheld at the client’s request
Timeline
April – July 2026
Squad
1 engineer, start to finish
Platform
Web · Arabic, right to left
Sections
Physiotherapy and slimming
Size
35 models · 158 routes · 86 permissions
Status
Delivered

Technologies

  • Laravel 10
  • PHP 8.2
  • MySQL
  • Blade
  • jQuery
  • Bootstrap 4 RTL
  • Chart.js
  • Spatie Permission
  • SweetAlert2
  • Select2

The product

7 images

01

Brief

Two clinical sections, one reception, one cashbox.

Context

The clinic treats physiotherapy and slimming clients. Both sections share the reception, the treatment devices, the stock and the cashbox, but each has its own kind of file, visit and follow-up.

What had to be managed

A client can be in either section or both, pays for a package in parts and by four methods, books sessions on devices that have hourly limits, and uses supplies the clinic has to reorder. Each section’s staff should work on their own part.

Goals

  • One file for each client in each section
  • Bookings by the hour that know every device’s limit
  • Packages, offers and payments in parts
  • A cashbox and a daily sheet that agree
  • Supplies with low-stock alerts
  • Permissions by section, edited by the owner

02

Team

One engineer, from the first screen to the handover.

Lead engineerRequirements, the screens, the Laravel system, the permissions, the clinic’s server and the handover×1Senior

Meet the team

03

UI/UX design

A licensed Arabic theme, made the clinic’s own.

Who worked on it

Tech lead

We started from a licensed admin theme with a right-to-left layout and shaped it for the clinic: a sign-in page with the clinic’s logo and image, Cairo for the text, tag colours that mean something, and a menu grouped the way the work is. The day’s bookings and the client file are one click from the menu.

  • The clinic’s own sign-inThe sign-in page carries the clinic’s logo and image, so staff meet the clinic’s identity before the system’s.
  • Colour that means somethingSections, session types, genders and booking states each have their own tag colour, so a row can be read at a glance.
  • A menu that follows the workThe sidebar is grouped the way the clinic works: examinations, slimming, physiotherapy, finance and the system’s own settings.

04

Frontend

Arabic screens a reception desk can use all day.

Who worked on it

Tech lead

The system is a server-rendered Laravel application with Blade pages, built on a licensed admin theme with a right-to-left layout and Cairo for text. The reception works from the day’s bookings laid out by the hour and from a five-step client file; the doctors work from each client’s visits and follow-ups. The physiotherapy case file prints as an A4 page, and every client has a QR page that opens their file.

The day, hour by hour.
Every client in one place.
A client’s file, step by step.
  1. Decision 1

    Server-rendered pages with jQuery, not a single-page app

    The system is a set of forms, tables and grids, which server-rendered pages suit. A licensed Arabic theme gave a tested right-to-left layout from the first day.

    Trade-off · The busiest pages carry their scripts inline, so they are long files to maintain.

  • The day, hour by hourBookings sit on a grid of the working hours. The reception filters them by session type, gender, responsible staff member and phone confirmation, and a postponed booking is dimmed and frees its hour until it is booked again.
  • A five-step client fileClient data, subscriptions, payments, the visit log, then a review of the whole file before it is finished.
  • Arabic all the wayRight-to-left layouts, Arabic weekday names with the week starting on Saturday, numbers that stay left to right, and drop-downs and alerts that open the right way round.
  • Careful with fast fingersA button that saves cannot be pressed twice, a page whose session expired reloads instead of failing, and an upload shows its progress.
  • On paper and by phoneThe physiotherapy case file prints as one A4 page, and a client’s QR page opens their file for whoever is signed in.

05

Backend & architecture

Packages, devices and money that add up.

Who worked on it

Tech lead

The back end is one Laravel 10 application with its rules in services: booking, availability, payments, orders, the cashbox, stock and attendance. A client’s packages are subscriptions, built from offers or from a company contract’s prices. Each payment is recorded inside a transaction that locks the subscription, and the cashbox is a ledger of every amount in and out with where it came from. Stock moves the same way: every change is a movement with its signed quantity and the quantity after it.

The packages the clinic sells.
Money in and out.
Stock with alerts.
  1. Decision 1

    Balances are worked out when they are shown

    What a client has paid, still owes and has used is calculated from their payments and visits, so there is no counter that can drift away from them.

    Trade-off · Each list does more work per row, so the heaviest pages ask the database more questions.

  2. Decision 2

    The hourly limit asks before it refuses

    The reception sometimes has to take one more client. The system warns that the hour is full and lets a user with booking rights continue.

    Trade-off · It is a house rule and not a lock: a booking made on purpose can pass it.

  3. Decision 3

    One client, one file for each section

    Physiotherapy and slimming keep their own history, follow-ups and checks for duplicates.

    Trade-off · A person who uses both has two files, with their details entered twice.

  4. Decision 4

    A contract’s prices are copied into the package

    Changing a company’s price later does not change what an existing package cost.

    Trade-off · A correction to an old package is made on that package.

  5. Decision 5

    A payment is all or nothing

    A payment split across cash, card and wallet is recorded in one transaction that locks the package, so two payments cannot both fill the same balance.

    Trade-off · If one part fails the whole payment is cancelled, and it is entered again.

  • 86 permissions, edited by the ownerPermissions are per action and per clinical section, with three roles to start from: super admin, admin and employee. The owner changes them in a permission matrix.
  • Devices have limitsA device can be limited per hour and weekday, and per client; a company contract prices each device, and a client under an active contract is billed at that rate.
  • Offers that carry their visitsA slimming package copies its visit template into pending visits when it is given to a client, so the programme is laid out from the first day.
  • Money that is not counted twiceA payment recorded on the daily sheet is not entered in the cashbox a second time.
  • Stock with alertsSupplies have an alert level. An item under it shows on the sidebar, the bell and the dashboard, and an analytics page shows what each department consumed.

06

DevOps

On the clinic’s own server, for the clinic’s staff.

Who worked on it

Tech lead

We set up the clinic’s own server and installed the system on it, so the clinic keeps control of its clients’ data. It is an internal system for the clinic’s staff, so this page gives no link to it.

07

Outcome

Finished and handed over to the clinic.

The system was finished and delivered to the clinic in 2026: the screens, roles, offers, devices and stock described above, for the clinic’s staff to work in.

Clinic management system for physiotherapy and slimming

Arrow keys or a swipe to move · Esc to close

Tell us what you’re building.

A short message is enough. A senior engineer replies within 1 working day.