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

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

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

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

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

Что было

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

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

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

Решение

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

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

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

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

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

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

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

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

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

Как устроено

Архитектура

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

Подача объявления

М
Маркет · ботонлайн
Шаг 3 из 10Выберите тип войск
ПехотаРейдеры
СтрелкиСмешанный
Стрелки
Шаг 4 из 10Сила героевнапример: 6.5 / 4.8 / 3.6 / 2.8
6.5 / 4.8 / 3.6 / 2.8
Шаг 10 из 10Пришлите видеодо 250 МБ, до 5 минут
📹 обзор.mp4 · 48 МБ
✅ Карточка собранаОтправлена на модерациюответим в течение часа
Результат

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

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

Технологии

PythonFastAPIaiogram 3 uvicornNext.jsTypeScript ReactPostgreSQLRedis Docker ComposeNginx
Заказчик коммерческий: название площадки, домен и ссылки на канал не публикуются. Скриншоты интерфейса воссозданы по реальной логике бота на обезличенных данных.