A Telegram bot for bookings, with a Mini App for the booking flow
The Bronjoy client bot lets customers find and book service businesses in Uzbekistan without leaving Telegram. The bot handles language, deep links and notifications, while a Telegram Mini App inside the Bronjoy customer app carries the booking itself. The shared Bronjoy bot opens the whole marketplace; a business can also connect its own bot, which opens straight to its booking page.
Key features
- Language first — the first
/startasks for Uzbek, Russian or English in all three languages at once, and the choice follows the person across every Bronjoy bot. - Deep links that survive the question — a
/startlink to a specific venue is parked for 15 minutes while the language question is answered, so the customer still lands on the business they tapped. - Silent sign-in — the Mini App sends Telegram's signed
initDatato the API, which verifies the HMAC-SHA256 signature and issues a customer token with no password or code. - The whole booking flow — service, branch, date and time, confirmation and payment steps, with the phone number requested through Telegram's own contact prompt.
- A Mini App home — upcoming visits, popular places nearby and a map preview for browsing.
- Chat notifications — confirmations, reminders and unpaid-booking prompts arrive with buttons that open the appointment or payment page inside the Mini App.
- White-label bots — an owner with the custom bot feature connects a bot token; Bronjoy validates it with Telegram, registers the webhook and points the bot's menu button at the business's booking page.
Architecture and tech stack
Bot backend
The bot runs on Nutgram, a PHP framework for the Telegram Bot API, inside the Laravel 12 API in webhook mode. One handler set serves the shared bot and every white-label bot. Each organization's webhook secret is derived with HMAC from a platform key, so a business that connects a bot never holds a secret that could forge updates for another business.
A daily telegram:setup-webhooks job re-registers every webhook, so a rotated token or a changed base URL cannot silently stop delivery. Sends also report why they failed: a customer who blocked the bot is marked unreachable and not retried, while a network error is retried.
Mini App frontend
The Mini App is a set of /tma routes in the Nuxt 4 customer app with its own layout. The entry screen renders "Initializing…" on first paint, so a Telegram launch never flashes the marketing home page, then signs the customer in and routes them to a venue's booking flow or their visits. Sign-in is idempotent, and concurrent callers share one in-flight request, so the layout and the page never authenticate twice. Screens use the generated, typed Bronjoy API client and are translated into all three languages.
Accounts
Telegram customers are found or created by Telegram ID, and a language picked in the bot is mirrored onto the account so other notifications use it too. The same find-or-create approach was later reused for BiliMind's Telegram Mini App.
Our role
We built the bot, the webhook and white-label layer, the Mini App flow and the notification templates. Work started in January 2026 with the first Telegram integration and Mini App authentication.
Related work
See our Telegram bot development service. Business owners confirm these bookings in the Bronjoy staff bot, and customers with questions reach the Bronjoy help bot.



