Case study · 2026

A padel club that takes bookings in Telegram and sells the spots on a court one at a time

STENKA is a padel club with four indoor courts. We built the club a website, a bot and a Telegram Mini App, an app that opens right inside Telegram with nothing to install. The club gets bookings without messaging, and whoever books a court doesn’t have to hunt for the other three players in group chats. The club itself is fictional; the product is real and running.

Client
STENKA, a padel club
Format
Telegram Mini App, website, bot
Languages
Russian
Status
Showcase project, live
СТЕНКАОткрыть в Telegram

Падел на Яузе, когда на улице ночь

Четыре крытых корта в бывшем цеху на Серебрянической набережной. Восемь минут пешком от Чкаловской, вдоль реки.

Свободно сегодня19:001 600 ₽20:301 600 ₽22:001 600 ₽
Забронировать в TelegramБез установки, прямо в Telegram.
С ноября по март играть на улице негдеУ нас крыто, в зале +19°, свет до полуночи.

Как забронировать

Без регистрации. Каждый платит свою часть.

1Выбираете времяКорт назначаем сами, номер будет в билете. Цена показана за человека.2Зовёте друзей или ждёте игроков клубаКорт держится за вами шесть минут. Друзьям отправляете ссылку на этот матч, а свободные места видят другие игроки клуба и занимают сами.3Приходите игратьВ билете код брони, номер корта и маршрут. Платите на месте, картой или наличными. Отмена бесплатна не позднее чем за 12 часов.

Сколько стоит

За корт на 90 минут и за человека при четверых.

КогдаЗа кортС человекаБудни до 17:004 800 ₽1 200 ₽Будни после 17:006 400 ₽1 600 ₽Выходные6 400 ₽1 600 ₽

Ракетка и мячи — 400 ₽ с человека.

СТЕНКАМосква, Серебряническая набережная, корпус 4

Клуб вымышленный: это витрина работы SOD Agency. Адрес, цены и расписание условные.

01 / The problem

How a padel club takes bookings

A padel court is built for four, but one person, the organiser, usually books and pays for it. They message or call the club, hunt for the other three in group chats and then collect money from them.

For the club, this way of booking costs time and money. The front desk answers messages asking whether a court is free tonight. When bookings are taken in a chat, it is easy to promise the same time to two people. And if no fourth player is found, the booking is cancelled and the court stands empty.

Players book the court without calls or messages, other club players take the free spots in a match, and the front desk only has to greet everyone.

02 / How booking works

From picking a time to four players on court

Sergey books an evening court and brings a friend. Mark finds the match among those that still have free spots and takes one of them. Anya takes the last spot through a link Sergey sent her.

02 / How booking works01 / 06

Free times are visible in Telegram, so nobody has to ask the club

The app opens inside Telegram, from the club’s bot or a button on the site, with no sign-up. One schedule covers all four courts: the player picks only a time, and the app finds a free court for it.

СТЕНКАСеребряническая наб., 44 корта

Август

вт25ср26чт27пт28сб29вс30

Сегодня, 25 августа

19:0090 минСвободно 2 корта1 600 ₽
20:3090 минСвободно 3 корта1 600 ₽
22:0090 минЗанято
19:00, 90 мин, с человека1 600 ₽Забронировать

03 / Who is playing

A player sees who is already in a match before taking a spot in it

For strangers to take spots in someone else’s match, they need to know who they will be playing with, so every player has a short profile.

03 / Who is playing01 / 03

The app asks for level, court side and preferred time

Players rate their own level on a four-step scale, from beginner to confident. Side matters because padel is played two against two, and in each pair one player stands on the left and the other on the right. The questions come up on first launch and can be skipped: booking doesn’t depend on the answers.

СТЕНКАСеребряническая наб., 44 корта

Август

19:0090 минСвободно 2 корта1 600 ₽

Как играете?

Чтобы в открытых матчах вы попадали к своим по уровню.

НовичокПервые игры. Учусь держать мяч в розыгрышеНачальныйРазыгрываю уверенно, под давлением ошибаюсьСреднийИграю у сетки, понимаю, куда бежатьУверенныйСмэш, выход к сетке, игра на счёт
ДальшеПотом

04 / What the business gets

What the club stops doing by hand

A booking takes no messages to the front desk

Available times are on the site and in the app, and the club’s bot sends the address and prices in reply to the /club command. Nobody messages the front desk to ask whether a court is free tonight.

No double bookings

The database won’t accept a second booking for the same court and time, so nobody argues at the front desk over whose booking it is.

If friends can’t make it, other club players can take the spots

Every club player sees the open spots in the app, and anyone can take one. The organiser doesn’t have to cancel the game, and the club keeps the booking for that evening.

Whoever takes an open spot pays for it at the front desk

The court price is split into four spots, and each player’s amount is recorded in the booking and shown on their ticket. The organiser pays only for themselves and the friends they bring, and doesn’t collect money from anyone else.

If a booking is cancelled or not confirmed, the court frees up without the front desk stepping in

If the organiser doesn’t confirm within six minutes, or cancels, the time shows as free again in the app and on the site. Nobody has to release the booking by hand.

A player books a court in three steps

The nearest available time is already selected in the app: all that is left is to tap «Забронировать» (“Book”), mark who is playing and confirm.

05 / Design

The mark: a ricochet off the wall

The ball comes in shallow, hits the wall and leaves steeper, downward. The trail narrows towards its tail, and the approach and rebound angles differ because the ball is losing speed. The apex is hidden inside the wall, so what you see is the hit rather than a joint between two stripes.

The wall is pulled in from the edge on purpose. Telegram crops avatars to a circle, and whatever is pressed against the square's border disappears first. The mark is built on a 64 grid and checked at 24 pixels.

The app follows Telegram’s theme

Background, cards and text turn light or dark with the Telegram theme. The court, lamps and ball on the ticket stay the same, so the ticket looks identical in both themes.

Times and prices line up in columns

Times, prices, scores and booking codes are set in a typeface where every digit has the same width, so they line up in the schedule and the right time is found at a glance.

Orange is used only for actions

In the app orange means a button you can press, which is why it appears neither in the club’s mark nor on the racket. The only thing that glows on screen is the lamps above the court on the ticket.

СТЕНКА
A 64 grid. The same mark goes into the bot avatar, the favicon and the wordmark.

06 / Club website

The site shows free times and opens booking in Telegram

The site answers the questions people usually message a club with: is a court free today, what it costs per person and how to book.

People move from the site to the app already knowing when they want to play and what they will pay.

  • Free times on the first screen come from the same database as the app, so the site and the app always match
  • The booking button opens the app in Telegram, with nothing to install
  • Prices, opening hours and directions to the club are on the same page
Scroll inside the frame
СТЕНКАОткрыть в Telegram

Падел на Яузе, когда на улице ночь

Четыре крытых корта в бывшем цеху на Серебрянической набережной. Восемь минут пешком от Чкаловской, вдоль реки.

Свободно сегодня19:001 600 ₽20:301 600 ₽22:001 600 ₽
Забронировать в TelegramБез установки, прямо в Telegram.
С ноября по март играть на улице негдеУ нас крыто, в зале +19°, свет до полуночи.

Как забронировать

Без регистрации. Каждый платит свою часть.

1Выбираете времяКорт назначаем сами, номер будет в билете. Цена показана за человека.2Зовёте друзей или ждёте игроков клубаКорт держится за вами шесть минут. Друзьям отправляете ссылку на этот матч, а свободные места видят другие игроки клуба и занимают сами.3Приходите игратьВ билете код брони, номер корта и маршрут. Платите на месте, картой или наличными. Отмена бесплатна не позднее чем за 12 часов.

Сколько стоит

За корт на 90 минут и за человека при четверых.

КогдаЗа кортС человекаБудни до 17:004 800 ₽1 200 ₽Будни после 17:006 400 ₽1 600 ₽Выходные6 400 ₽1 600 ₽

Ракетка и мячи — 400 ₽ с человека.

СТЕНКАМосква, Серебряническая набережная, корпус 4

Клуб вымышленный: это витрина работы SOD Agency. Адрес, цены и расписание условные.

The club website

07 / Reliability

No court can be double-booked

If two players tap «Забронировать» (“Book”) for the same time at the same moment, the first gets the court and the app gives the second the next free one.

Two players picked the same time
First playerCourt 1 · 20:30–22:00booked
Second playerCourt 1 taken
the app takes the next courtCourt 2 · 20:30–22:00booked

A player is turned away only when all four courts are taken at that time: «Это время только что заняли. Выберите другое» (“This time was taken a moment ago. Choose another”). If a player taps twice, or a bad connection makes the app send the booking again, no second booking appears either: the player gets the one already created. The ban on two bookings of one court at the same time is written into the database itself, so it holds even if the app glitches.

08 / Scope

What the project includes

Telegram Mini App

  • One schedule for all courts, with the nearest free time preselected
  • The app picks the court and holds it for six minutes while the player confirms
  • Line-up: spots for your own friends and spots open to any club player
  • Player profile: level, court side, preferred time
  • Stats from bookings: matches played, hours on court, frequent partners
  • Ticket with the booking code, line-up and directions to the club
  • List of open matches and invitations to a match by link
  • Your games: the organiser can cancel a booking, a player can leave someone else’s match
  • Club info: prices, opening hours, address, rules

Website and bot

  • Club website with free times from the same database as the app
  • Bot: address, prices and buttons that open the app
  • Club mark, bot avatar and app cover

Foundation

  • Next.js on Cloudflare Workers
  • Neon Postgres: the ban on double bookings is written into the database itself
  • The amount each player pays is recorded in the database
  • Bookings are tied to the player’s Telegram account, so no sign-up is needed

09 / Honestly

What the showcase version doesn’t have

STENKA is a showcase project: the club is invented to show booking at work.

The address, prices and schedule are placeholders.

There is no online payment: the showcase has no legal entity or payment provider, so people pay on site. For the same reason, the cancellation and no-show rules are only written in the app: nobody is charged for cancelling later than 12 hours before the game or for a player who didn’t show up.

There is no admin panel: the front desk can’t see the bookings, so there is nothing to check a player’s booking code against and nowhere to mark payments. Prices and opening hours are changed by the developer.

The bot doesn’t send notifications yet: no match reminders, no message when someone takes a spot or a booking is cancelled. Players check the line-up on the ticket.

Need the same kind of booking?

The setup suits any hourly rental: courts, studios, meeting rooms. Two parts carry over to any of them unchanged: the slot is held for the customer while they book, and the same time can’t be booked twice. Selling by the spot helps wherever several people share one slot. The first conversation is free: we will go through your process and tell you what you actually need.