E-commerce · Full Stack · Design
Year
2026
Role
UI Designer & Developer
Category
E-commerce, Full Stack, Design
Stack
NestJS, React, PostgreSQL, Medusa, Docker

A full-stack Telegram commerce platform where sellers go from a product photo, link or barcode to an AI-written listing and a published channel post, through both a chat bot and an in-Telegram Mini App. I designed and built it with NestJS, React and PostgreSQL.
Visit Telegram Commerce ↗A provider-agnostic AI layer with Anthropic Claude and local Ollama models, using Zod schemas for structured output. It handles product extraction, bilingual (English and Amharic) descriptions and configurable post styles, and local models allowed free testing with no API spend.
Generates product images from reference photos: it removes backgrounds, enhances photos, places the product on a model, overlays the seller's logo, and compresses and validates uploads with Sharp.
Medusa v2 as the headless product catalog, with a sync engine that detects drift between the catalog and live Telegram posts, then regenerates or re-edits the posts.
Secure Telegram Mini App authentication by validating initData signatures in a NestJS guard, plus seller and store onboarding, channel connection with bot-admin verification, and an account-locking and activation flow.
Captures buyer comments from connected channels and groups, with a chat-style reply UI in the Mini App. Includes stock and sold-out management, with sold-out banners on posts.
Per-store AI usage and cost tracking, prompt templates stored in the database and editable without a deploy, and integration credentials encrypted at rest.
Feature parity between the bot and the Mini App, including a live-camera barcode scanner, custom post styles, and product and price editing. Large components were refactored into reusable hooks and shared UI such as a modal system, channel picker and optimistic updates.
The whole stack runs under Docker Compose with one-command startup. A Medusa first-boot migration bug is worked around by checking in a schema dump that Postgres restores automatically.