02 · Telegram mini app, bot and admin panel · 2026

Design Market

A marketplace for interior pieces that lives inside Telegram: posting a listing, moderation, holds and publishing to the channel — without a jump to a browser.

Role Frontend, backend, infrastructure
Timeline 9 weeks
Scale Over a thousand listings, dozens of sellers
Stack FastAPI · aiogram 3 · PostgreSQL · Celery + Redis · React

The problem

Luxury interiors are sold on the photograph and the seller’s reputation, not on a price filter. Pieces lived in personal accounts and spreadsheets: a buyer could not compare two offers, and a seller could not tell what had been viewed.

What was needed was a shopfront with a large frame, a calm grid, and a category page that opens instantly — even with thousands of listings.


What was built
01

Catalogue and search

Categories, periods, materials and designers. Search understands morphology: “brass sconces” finds “sconce made of brass”.

02

Seller account

Bulk listing upload, drafts, and view and enquiry statistics for each piece.

03

Moderation

A queue with rejection reasons and an edit history: in the luxury trade the platform answers for listing quality, not the seller.

04

Sourcing requests

A buyer describes what they want in words — the request goes to the right sellers and the replies gather in one place.

How it started
designmarket.example/catalog/light
Design Market LightingFurnitureRugsDecor
Lighting 312 listings · newest first
Serge Mouille sconce, 1950s 184,000 ₽
Sciolari chandelier, brass 470,000 ₽
Arredoluce floor lamp 610,000 ₽
Fontana Arte table lamp 295,000 ₽
A category page: a large frame, a calm grid, price and provenance — everything that decides a sale in this segment.

Engineering decisions
01

The catalogue as static pages

Category and listing pages are generated ahead of time and reindexed on a “listing passed moderation” event. A category opens in a fraction of a second and does not depend on database load.

02

Photographs in three sizes

A seller uploads a 20-megapixel original and gets back three crops in AVIF and WebP with the proportions preserved. Mobile traffic for the catalogue dropped several times over and the frame stayed large.

03

Search across Russian morphology

A PostgreSQL full-text index with a dictionary and domain synonyms: two spellings of “art deco” lead to the same results, and designers’ names do not fall apart across grammatical cases.

Result

A catalogue that opens faster than the buyer can change their mind.


Similar problem? Tell me in one message.