← 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
Access
code private, production client work
visit live site →

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.

  1. Four provider types wanted four schemas. They got one polymorphic model instead, cutting the onboarding surface by about 60%.

  2. Real-time notifications over Channels and FCM, behind a custom JWT WebSocket middleware.

  3. 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

↑ Back to the surface