A Telegram Mini App for booking a beauty salon: Velvet Studio
Velvet Studio is a beauty salon booking service that lives entirely inside Telegram. A client opens the Mini App, picks a service, a specialist and a free slot, confirms the booking and instantly receives the visit details in chat. The booking lands in the salon’s Google Sheet, while the owner sees the schedule and the statistics in the same bot. No phone calls, no separate app, no paper diary.
Who it fits: beauty salons, barbershops, nail studios, massage and cosmetology practices, and any other business that runs on appointments - from car services to private tutors. Especially those still taking bookings in direct messages and checking a specialist’s availability by hand.
Stack: Python with aiogram for the bot, FastAPI for the Mini App back end, the Google Sheets API instead of a database and APScheduler for reminders.
- Python
- aiogram
- FastAPI
- Telegram Mini App
- Google Sheets API
- APScheduler
How the system is put together
The system has three parts working on the same data: the Mini App where the client books, the Google Sheet where those bookings live, and the Telegram bot the salon uses to see and count them. None of the parts needs to be opened separately - everything sits inside Telegram.
1. The Mini App for the client
Booking opens straight from the bot chat and looks like the salon’s own app rather than a conversation. The flow has five steps: service, specialist, date and time, contact details, confirmation. The price and the duration are visible from the first step, so the client knows the cost of the visit before confirming it.
The list of specialists is filtered by the chosen service, so the client only sees the people who actually perform it. The calendar only opens the days that specialist works, and the time grid accounts for the length of the service, the individual schedule and the existing bookings - busy hours simply never appear.
2. A Google Sheet as the back office
There is no separate admin panel, and that is a deliberate choice. The back office is an ordinary Google Sheet with tabs for specialists, services, bookings and settings. The administrator edits it exactly as they would edit any spreadsheet - nobody has to learn a new interface.
Change a price, add a specialist or close a day - the Mini App and the bot pick it up at once. Every booking is a separate row that can be sorted, filtered or exported, and the history stays in the salon’s own account rather than in somebody else’s system.
3. The Telegram bot for the owner
The owner runs the salon from the same bot. The start command opens the panel: today’s and tomorrow’s bookings, any other day, free slots and statistics. A separate button forces a re-read of the sheet if the administrator has just changed something in it.
Statistics are calculated per period - today, the next seven days, the last seven or the last thirty. The summary shows the number of bookings by status, unique clients, the amount earned and the amount pending, the top services and the top specialists. The figures come from the very same rows of the sheet, so there is nothing to reconcile.
The logic that matters
- → Double-booking protection: the slot is checked again at the moment of confirmation, so two clients cannot land on the same specialist at the same hour even if they book simultaneously
- → Booking statuses: pending → confirmed → completed or cancelled. The status is changed in the sheet and the statistics are recalculated from it automatically
- → An automatic reminder 24 hours before the visit: the scheduler finds tomorrow’s bookings, sends the client a message and marks the row so the reminder is never sent twice
What the system can do
- → A five-step booking right inside Telegram - no website, no separate app, no phone calls
- → A service catalogue with price, duration, description and category, all editable in the sheet
- → Specialist profiles: specialisation, rating, a weekday schedule, days off and their own list of services
- → Specialists filtered by the chosen service - the client only sees those who perform it
- → A free-slot grid that accounts for the length of the service, the specialist’s schedule and existing bookings
- → A Telegram confirmation for the client with the booking number, the service, the specialist, the address and the amount
- → An owner panel: bookings for today, for tomorrow and for any chosen day, plus the free slots
- → Statistics per period: bookings by status, unique clients, revenue, top services and top specialists
- → A Google Sheet instead of an admin panel: the salon’s data stays in the salon’s own account