← All projectsflagship build2026Under the hood ↓
Rezervitoo
The one I'm proudest of. The architecture finally caught up to the ambition.
A live multi-provider booking platform (hotels, hostels, agencies, hosts). The backend is mine end to end — schema, API, caching, real-time — and on the front end I built the admin panel. Another developer built the public-facing site against my API.
- Role
- Backend architect · admin panel front end
- Stack
- DjangoReactPostgreSQLRedisChannelsTanStack QueryTypeScriptDRF
- Result
- ~40mscached responses, down from 176ms
A Screens
Resolved before the page paints
Occupancy, bookings and revenue are aggregated and cached on the server. Cached responses land in about 40ms, down from 176.
Four provider types, one model
Hotels, hostels, agencies and hosts wanted four schemas. One polymorphic model carries all of them, cutting the onboarding surface by roughly 60%.
Arabic that actually mirrors
Not translated strings in a left-to-right frame. Navigation, tables and icons all flip, because a half-mirrored layout is worse than none.
100+ endpoints, documented as written
The whole surface is browsable and typed. Someone joining reads the contract instead of asking what a field is supposed to mean.
Pushed, never polled
Notifications arrive over Channels behind custom JWT WebSocket middleware. Nothing on screen waits for a refresh to find out what changed.
Under the hood
Rezervitoo
Under the hood
Rezervitoo
B Architecture
From a search to a stay
Nothing a traveller sends is treated as a price. The server works out what a stay costs, the provider decides whether it happens, and only a booking that actually completed can be reviewed.
How a booking request is answered
Four kinds of provider, one backend. Every price and every availability window is decided on the server before anything reaches a screen.
- What people use
- Code I wrote
- Where it is kept
- Someone else's service
C Decisions
The calls that made the difference, and what each one bought.
Four provider types wanted four schemas. They got one polymorphic model instead, cutting the onboarding surface by about 60%.
Real-time notifications over Channels and FCM, behind a custom JWT WebSocket middleware.
Arabic, English, and French. The layout mirrors properly, not just the words.
D What it runs on
- Django
- React
- PostgreSQL
- Redis
- Channels
- TanStack Query
- TypeScript
- DRF
code private, production client work