Client project
Rent-a-Clean: a platform for booking cleaning services
For a client, I built a web platform and iOS and Android apps for booking cleaning services. The client sends a request, partners send offers, and the whole arrangement happens without a phone call.
The brief
The client wanted one place where people book cleaning and related services, and where providers, the platform's partners, receive requests and answer with an offer. Booking had to work on the web and in a mobile app, with card payments and invoices, in Croatian and English.
What was built
- a public website with a service catalogue, from flat cleaning to gardening
- a web app for clients and partners
- mobile apps for iOS and Android
- an admin panel where the platform owner approves partners and edits services
- a blog and site content that are edited without a developer
How a booking works
The client picks a service, an address and a time. On the web they can start without an account: they fill in the whole request, and registration is asked for only when they send it. The request then waits for offers from partners who cover that area.
The partner gets a push notification and sends an offer. The client accepts one and pays by card. After that they follow the job status, message the partner and leave a review at the end. Cleaning that repeats, say every week, is booked once.
Partners
A provider applies as a partner through the website, and an admin reviews and approves the application. The partner then picks the areas they work in on a map, receives requests from those areas, sends offers and runs jobs from the web or mobile app.
My role
I ran the project end to end: screen design, the web platform and both mobile apps, the server and database, the App Store and Google Play releases, and maintenance. The client had one person for everything technical, and changes went straight from agreement to a new version.
Everything users see exists in Croatian and English, on the web and in the apps. Notifications about new offers, accepted jobs and status changes arrive by email and as push notifications, so neither clients nor partners have to keep checking the app.
Technology
The web app is built with Next.js, React and TypeScript on PostgreSQL with Prisma. The mobile apps are written in React Native with Expo and share the data schemas and the API with the web. Sign-in runs on Better Auth, with email, Google or Apple.
Payments and saved cards go through Stripe, invoices and fiscalisation through the Croatian service Solo, emails through Resend, and push notifications through Firebase Cloud Messaging. Site content is edited in Sanity, and the web app runs on Vercel.
Testing and maintenance
The platform has automated tests: Vitest for business logic and the API, Playwright for the web app in a browser. The mobile apps are tested on real devices, an iPhone and several Android phones, one of them set to Croatian. I continue to maintain the platform and extend it as the client asks.
What this project shows
The same kind of system fits any business where a client orders a service and a provider confirms it: turnover cleaning between holiday guests, repairs, servicing, garden care. If your bookings still run on phone calls and messages, this is what the alternative can look like.