The problem
Bella Home grooms pets at the customer's home, anywhere in Doha. Every booking has a pet, a service, an address, a date and a time attached, and all of it has to be right before anyone sets off. Arranging that one message at a time doesn't scale, and it leaves the team without a clear view of the day.
What we built
Two things that share one database: the public website customers see, and the booking system the team runs on.
For customers, the site is in Arabic and English, with a full right-to-left layout. Booking takes four short steps on a phone: the pet, the service, where and when, and contact details. A final review screen shows everything before it's sent.
- A confirmation email with a private link to manage the booking
- Self-service rescheduling and cancellation from that link, with no phone call needed
- "Find my booking" for anyone who lost the email. It's built to give a stranger nothing: a real customer's details and made-up ones produce identical screens
For the team, a dashboard shows every booking as a table, a board or a calendar, and it updates live as bookings arrive.
- A timeline on every booking: each change, email and reply, in order
- A "needs attention" strip for anything that failed or is waiting on a person
- Replies to customers straight from the booking, by email
The unglamorous parts
Booking systems fail in quiet ways, so we built against them. A form submitted twice on a bad connection creates one booking, not two. A manage link with a wrong or missing token shows the same "we couldn't find that booking" message as one that doesn't exist, so it can't be used to probe for customers. Hundreds of automated tests cover the booking rules, and every step of the live form was walked in both languages on a phone-sized screen before launch.
What this demonstrates
Custom software a small business actually runs on: bilingual, mobile-first, and dependable in the places customers never see.
