DropUnion App - магазин у Telegram для продавців одягу
DropUnion App - це не один магазин, а платформа, з якої їх виростає скільки завгодно. Продавець реєструється в боті, отримує персональне посилання - і покупець, відкривши його, потрапляє у вітрину саме цього магазину прямо в Telegram. Каталог можна вести руками, а можна підтягнути з MyDrop чи Google Таблиці; замовлення, статуси, доставка Новою поштою і оплата підписки працюють автоматично.
Кому підходить: продавцям одягу, взуття й аксесуарів, які торгують з Instagram і Telegram та приймають замовлення в директі; дропшиперам, що працюють на чужому складі; а також тим, хто хоче запустити власну платформу з підпискою, а не один магазин.
Стек: Python і aiogram для бота, FastAPI і PostgreSQL на бекенді, React + Vite для Mini App, інтеграції з MyDrop, Google Sheets, Новою поштою і WayForPay.
- Python
- aiogram
- FastAPI
- PostgreSQL
- React
- Telegram Mini App
- MyDrop API
- Nova Poshta API
- WayForPay
Як влаштована платформа
Ключове рішення - один бот на всіх. Продавець не отримує окремого бота, якого треба реєструвати, хостити й оновлювати: він реєструється в спільному боті платформи і отримує посилання зі своїм токеном. Покупець відкриває це посилання і бачить вітрину саме цього магазину - з його товарами, банером і кольорами. Магазинів у системі може бути скільки завгодно, і жоден не знає про інші.
Далі система розпадається на дві половини, які працюють з однією базою: вітрина, у якій купує клієнт, і бот, у якому продавець веде магазин. Ані клієнту, ані продавцю не треба ставити застосунок чи відкривати сайт - усе відбувається всередині Telegram.
1. Вітрина покупця
Вітрина - це Telegram Mini App на React: головна з банером і категоріями, каталог з пошуком і фільтрами, картка товару з розмірами й кольорами, кошик і чекаут. Категорії окремо ніхто не заводить - вони збираються з категорій самих товарів, тож список у вітрині завжди відповідає тому, що є в наявності.
Оформлення замовлення враховує українську специфіку: місто й відділення Нової пошти підказуються з локальної бази відділень, а не запитом до чужого API на кожну літеру. Якщо продавець увімкнув підтвердження оплати, покупець зобовʼязаний прикріпити скріншот переказу - без нього замовлення просто не створиться.
2. Бот продавця замість адмінки
Окремої адмінки в системі немає - магазин повністю керується з бота. Товари додаються покроково (назва, опис, ціна, категорія, фото, розміри, кольори, наявність), будь-який крок можна пропустити, а вже додану картку - відредагувати по одному полю, сховати з вітрини або видалити.
Вигляд вітрини теж налаштовується з бота: акцентний колір кнопок, фото банера і рядок під назвою магазину. Змінили - покупці бачать це одразу, нічого перезапускати не треба. Довідка теж живе усередині бота, тож продавцю не доводиться шукати інструкцію деінде.
3. Звідки береться каталог
Каталог можна вести руками, але сенс платформи в іншому: підключити готове джерело і не займатися товарами взагалі. Джерел три - MyDrop у ролі постачальника (свій склад), MyDrop у ролі дропшипера (чужий склад плюс ваша націнка у відсотках або фіксованою сумою), YML-фід і звичайна Google Таблиця, у якій бот сам визначає, де яка колонка.
Активним може бути лише одне джерело, і при перемиканні попередній імпорт видаляється, щоб у вітрині не лишалося товарів, яких уже ніхто не постачає. Товари, додані руками, при цьому лишаються на місці. Каталог і залишки оновлюються самі раз на пів години.
4. Замовлення, доставка й гроші
Щойно покупець оформив замовлення, продавцю приходить картка з контактами, переліком товарів, містом і способом доставки - і скріншотом оплати, якщо той увімкнений. Статуси змінюються кнопками просто під карткою, і на кожній зміні покупець автоматично отримує повідомлення від імені магазину.
Якщо підключено MyDrop, статуси синхронізуються в обидва боки, а номер накладної підтягується сам - продавцю не треба переносити замовлення руками ні туди, ні назад.
5. Підписка як бізнес-модель
Платформа заробляє на підписці: перші дні безкоштовні й без картки, далі вмикається автосписання через WayForPay. Якщо платіж не пройшов, система пробує ще, до трьох разів, і пише продавцю причину; після скасування магазин працює до кінця вже оплаченого періоду, а не вимикається тієї ж хвилини.
Ключова логіка
- → Мультитенантність на одному боті: токен у посиланні визначає магазин, тому запуск нового продавця не потребує ані нового бота, ані окремого деплою
- → Ручні й імпортовані товари розділені: зміна або скидання джерела каталогу не чіпає те, що продавець завів сам
- → Автосписання з повторними спробами і зрозумілим повідомленням про причину відмови замість тихого відключення магазину
- → Відділення Нової пошти зберігаються локально й оновлюються за розкладом - чекаут не залежить від доступності зовнішнього API
Що вміє платформа
- → Власний магазин у Telegram для кожного продавця - вітрина Mini App за персональним посиланням
- → Каталог з пошуком, фільтрами новинок, популярного і знижок та підвантаженням порціями
- → Картка товару з кількома фото, розмірами, кольорами, залишками і закресленою старою ціною при знижці
- → Кошик і чекаут з автокомплітом міста та відділення Нової пошти
- → Імпорт каталогу з MyDrop (постачальник або дропшипер з націнкою), YML-фіда чи Google Таблиці
- → Автооновлення цін і залишків кожні 30 хвилин без участі продавця
- → Замовлення зі статусами нове → підтверджено → відправлено → доставлено і автосповіщенням покупцю
- → Двобічна синхронізація статусів і накладних з MyDrop
- → Налаштування вигляду вітрини з бота: акцентний колір, банер і текст під назвою магазину
- → Підписка з безкоштовним періодом, автосписанням WayForPay, повторними спробами і скасуванням у два кліки