Перейти до вмісту
sp1le.tech
EN
Онлайн 2026 Комерція в Telegram, реальний бізнес

Tandyr

Харчовий бізнес приймає замовлення двома шляхами: усередині Telegram як Mini App і зі звичайного сайту - для тих, хто не ставитиме месенджер заради вечері. Один каталог, один конвеєр замовлень і одне місце роботи для персоналу - той самий Telegram, який у них і так відкритий.

FastAPI · aiogram 3 · React · SQLite Відкрити · tandir.top

Обмеження

Замовник - кухня, а не техкомпанія. Замовлення мають доходити і з Telegram, і зі звичайної сторінки, робоча частина має працювати з телефона посеред зміни, і терміналу там не відкриє ніхто й ніколи.

Рішення

  • 4 записи
  • кожен - із ціною

Журнал рішень

Один бекенд на FastAPI обслуговує і Mini App, і публічний сайт

Замість
Окремий сайт і окремий бот
Тому що
Дві кодові бази - це два каталоги, що розходяться, і ціни довелося б правити двічі. Правлять один раз.
Ціна рішення
У веб-оформленні немає Telegram-id, тож ідентичність довелося зробити необовʼязковою в усій моделі замовлення, а не вважати наявною.

SQLite з FTS5 для пошуку по каталогу

Замість
Postgres або окремий пошуковий сервіс
Тому що
Одна локація, каталог на десятки позицій, кілька одночасних покупців. FTS5 уже всередині файла й відповідає миттєво, і нічого додаткового не треба ні запускати, ні бекапити.
Ціна рішення
У день, коли відкриють другу точку й знадобиться паралельний запис, це перше, що я заміню. Краще замінити тоді, ніж тримати Postgres заради однієї кухні зараз.

Знижки - це правила з областю дії: товар, категорія або все, і перемагає найконкретніше

Замість
Правити ціни руками заради кожної акції
Тому що
Кухня постійно запускає акції і забуває їх відкотити. Правило з перемикачем відкочується одним кліком, а не памʼяттю про двадцять цін.
Ціна рішення
Два правила однієї області дії розвʼязуються більшим відсотком. Цю політику обрав я, і її доводиться пояснювати щоразу, коли стикаються акції на 15% і 20%.

Персонал працює через FSM-діалог у Telegram

Замість
Веб-панель адміністратора
Тому що
Адмінка - це нове, чого треба вчити, новий логін, який можна загубити, і ще один екран, який треба тримати адаптивним. Telegram у них уже відкритий і вже авторизований.
Ціна рішення
Усе, що має форму таблиці - місячний звіт, масова зміна цін - у чаті справді незручне й мусить жити поза ботом.

Цифри

  • заміряно, не округлено

Масштаб

4 213
рядків бекенду
21
модулів бекенду
15
екранів Mini App
2
точки входу замовлень, один конвеєр

Стек

  • FastAPI
  • aiogram 3
  • React
  • Vite
  • SQLAlchemy
  • SQLite FTS5
  • systemd
  • nginx

Ретро

  • написано після, не до

Що змінив би

Публічний сайт зʼявився після Mini App, і схема досі показує, в якому порядку все відбувалося: orders.telegram_id допускає NULL і кожне замовлення має source зі значенням telegram або web, але користувачі й кошики привʼязані до Telegram-id. Покупець із сайту може замовити, але не може мати кошика чи історії. Це справжній шов, а не косметичний. Починаючи знову, модель акаунта була б незалежною від ідентичності з першої міграції, а не Telegram-first із прикрученим винятком для вебу.

Далі

Контакти

  • Інженер-програміст повного циклу

Почнімо розмову

Напишіть, що ви будуєте і що заважає. Відповідаю особисто, зазвичай того ж дня.

stasyukdmitriy2602@gmail.com Telegram @decimal128 LinkedIn github.com/sp1le