Naeman
A men's barbershop brand with craftsman service and a Pasha-era spirit. We built the system behind it: booking, loyalty, packages, payments and the dashboard that runs every branch.
The client
Naeman (نعيمًا) is a men's barbershop brand in Egypt, built around careful craft and a classic, Pasha-era character. They wanted the digital side to feel as considered as a visit to the chair.
What they needed
- Customers book a service at a branch in about a minute, from their phone.
- Regulars earn points on every visit and buy prepaid packages.
- Each branch manages its own services and schedule, while the owners see the whole business.
- Payments, sign-in and reminders that simply work, in Arabic first.
What we built
| Part | What it does |
|---|---|
| Customer app | Book a service at any branch, pay online, collect points, use packages and promo codes, order products, raise a complaint. |
| Admin dashboard | Branches, services and categories, packages, orders, points rules, promo codes, complaints, and messages to customers. |
| Backend & API | One source of truth for every branch: bookings, customers, points, payments and orders. |
| Public website | The brand's home, Arabic-first, built to load fast and point people to the app. |
How it fits together
flowchart LR
App[Customer app] --> API[Backend & API]
Admin[Admin dashboard] --> API
Web[Public website] -.download.-> App
API --> DB[(Database)]
API --> Pay[Online payments]
API --> SMS[SMS one-time codes]
API --> Push[Push notifications]
API --> Media[Image storage]
Jobs[Scheduled jobs] --> APIA typical visit, from the system's side:
- A customer signs in with their phone number and a one-time code sent by SMS.
- They pick a branch and a service. The API checks the schedule and records the booking.
- They pay online, or use a package they already bought. The payment provider confirms back to the API, never only to the app.
- Scheduled jobs send a reminder before the visit.
- After the visit, points are added to the customer's balance. The branch sees all of this live in the dashboard.
How we worked
- Plan: loyalty and package rules were agreed and written down before any code, so points always mean the same thing in the app, the dashboard and at the branch.
- Build: sign-in, payments, notifications and media were built as solid shared pieces, so adding a branch is a setting, not a project.
- Measure: every payment is confirmed server-to-server and recorded, so the numbers in the dashboard match the bank.
- Learn: Arabic-first from day one: layout, numbers and wording were designed for Arabic readers, not translated at the end.
Result
Naeman runs every branch, booking and loyalty point on one system, and customers book in about a minute.



