Marketplace · bot + site

A marketplace where the ad is submitted in the bot and the storefront lives on the site

The seller fills in the card right inside Telegram and attaches a video. The moderator presses one button. The ad goes to the channel and to the site at the same time. One database, three entry points.

RoleFullstack development
BackendFastAPI · aiogram 3
FrontendNext.js
InfrastructureDocker Compose
The problem

Ads lived in chat messages

How it was

Sellers sent product descriptions as free-form messages. Half the cards arrived without the key specifications, and the admin chased them up by hand. Publishing to the channel was done by copy and paste. There was no search, and the history got lost in the feed.

+ What was needed

One submission form that will not let a field be skipped. Moderation in one click. A storefront with search and cards, so that an item can be found instead of scrolled past in a channel.

Solution

What was built

A step-by-step form in the bot instead of free text

Submitting an ad is split into ten steps with validation on each one: numeric specifications, choices made with buttons, the price, linking the account. A field cannot be skipped, the card simply will not assemble. The result is that every ad comes out in one format.

Video with limit checks

A clip of up to 250 MB and 5 minutes is attached to the card, and the bot checks the size and the length before the upload rather than after. Photos are deliberately not accepted: in this niche they prove nothing, while video does.

Moderation in one click

A new card lands with the admin together with buttons. Once approved, the ad goes to the channel and appears on the site from the same database record. Nothing has to be duplicated by hand.

A storefront on Next.js

A site with a catalogue and an ad page, pulling its data from a shared API. The backend FastAPI serves both the bot and the front end. One data model, and no drift between "what is in the channel" and "what is on the site".

How it works

Architecture

Telegram botsubmission + moderation
FastAPIshared backend
PostgreSQLads
Next.jsstorefront
Docker Composethe whole stack
Telegram channelauto publishing
Result

What changed

10form steps, no field can be skipped
1click to publish to the channel and the site
3entry points on one database
250 MBvideo checked before upload
Stack

Technologies

PythonFastAPIaiogram 3 uvicornNext.jsTypeScript ReactPostgreSQLRedis Docker ComposeNginx
At the client's request the platform name, the domain and the channel links are not published.