Маркетплейс · бот + сайт

Маркетплейс, где объявление подаётся в боте, а витрина живёт на сайте

Продавец заполняет карточку прямо в Telegram и прикладывает видео. Модератор жмёт одну кнопку. Объявление уходит в канал и на сайт одновременно. Одна база, три точки входа.

РольFullstack-разработка
БэкендFastAPI · aiogram 3
ФронтендNext.js
ИнфраструктураDocker Compose
Задача

Объявления жили в переписке

Что было

Продавцы скидывали описание товара сообщениями в свободной форме. Половина карточек приходила без ключевых характеристик, и админ доспрашивал их руками. Публикация в канал делалась копипастом. Поиска нет, история теряется в ленте.

+ Что нужно было

Единая форма подачи, которая не даст пропустить поле. Модерация в один клик. Витрина с поиском и карточками, чтобы товар можно было найти, а не пролистывать канал.

Решение

Что построено

Пошаговая форма в боте вместо свободного текста

Подача объявления разбита на десять шагов с валидацией на каждом: числовые характеристики, выбор из вариантов кнопками, цена, привязка аккаунта. Пропустить поле нельзя, карточка просто не соберётся. На выходе все объявления единого формата.

Видео с проверкой лимитов

К карточке прикладывается ролик до 250 МБ и 5 минут, бот проверяет размер и длительность до загрузки, а не после. Фото не принимаются намеренно: в этой нише они ничего не доказывают, а видео доказывает.

Модерация в один клик

Новая карточка падает админу с кнопками. Одобрил, объявление уходит в канал и появляется на сайте из той же записи в базе. Дублировать вручную ничего не нужно.

Витрина на Next.js

Сайт с каталогом и страницей объявления, данные тянет из общего API. Бэкенд FastAPI обслуживает и бота, и фронт. Одна модель данных, никакой рассинхронизации между "что в канале" и "что на сайте".

Как устроено

Архитектура

Telegram-ботподача + модерация
FastAPIобщий бэкенд
PostgreSQLобъявления
Next.jsвитрина
Docker Composeвесь стек
Канал Telegramавтопубликация
Результат

Что изменилось

10шагов формы, поля не пропустить
1клик на публикацию в канал и сайт
3точки входа на одной базе
250 МБвидео с проверкой до загрузки
Стек

Технологии

PythonFastAPIaiogram 3 uvicornNext.jsTypeScript ReactPostgreSQLRedis Docker ComposeNginx
По просьбе клиента: название площадки, домен и ссылки на канал не публикуются.