VÉLOX Detailing Studio
A website, online booking, admin panel and Telegram bot for a car detailing studio. Every channel shares one database and one set of booking rules.
The problem
The studio needed to take bookings from both the website and Telegram, manage staff schedules and services, update site content without a developer, and make sure the same time slot can’t be taken through two different channels.
The solution
A single product built on FastAPI and PostgreSQL. The website, admin panel and Telegram bot share one database and one set of booking rules. The architecture supports multiple studios: every booking belongs to its studio.
Client-facing website
A responsive studio website: services and prices, before/after work, reviews, gift certificates and contacts. The owner edits texts, photos and prices in the admin panel. Screenshots show the product in Russian, its original language.
Online booking
- 1ServiceChosen from the studio catalogue
- 2SpecialistPicked by the client where the service allows it
- 3TimeOnly available slots
- 4Contact detailsName, phone, car model optional
- ConfirmationBooking number, calendar file and a cancellation page available until the deadline
The website, admin panel and bot validate bookings against the same rules; overlapping slots are additionally guarded by database-level constraints.
Admin panel
The studio’s workspace, from schedules and staff workload to site content. Access is split by role.
- Schedules and staff workload
- Services, prices and specialists
- Clients and bookings
- Site content, media and reviews
- Settings and staff access
- Roles: owner, administrator, specialist
- Client data deletion on request (Russian Federal Law 152-FZ)
- Daily backups
Telegram bot
For clients
- Book a service
- Mini App with a calendar of free slots
- “My bookings” section
- Reschedule or cancel
- Ask the administrator a question
- Reminders 24 hours and 2 hours ahead
For the studio
- New requests arrive in the administrators’ chat
- “Confirm”, “Assign specialist” and “Decline” buttons
Tech stack
Backend
Data
Bot
Interface
Media
Quality
Testing and quality
The pytest suite is split into unit, integration, API and bot tests, with an isolated environment of its own: a separate Docker Compose stack. Code is linted with ruff, and checks run in GitHub Actions.
Infrastructure and deployment
Separate configurations for development, testing and production; memory limits are set for the server.
The database schema is versioned with Alembic.
Daily database and media backups, plus a copy before every update.
Installation, updates and backups are covered in docs/deployment.md.
Client data deletion on request, in line with Russian Federal Law 152-FZ.
Server addresses, keys and credentials are not published in this case study.
Need a similar system?
Tell me about the problem and we’ll work out how to solve it.