Case 06 / 17 · Digital goods marketplace · 2026
Digimart
A full marketplace for selling digital goods — bots, websites, scripts, landing pages, SaaS and templates — with a wallet, withdrawals and moderation.
- Development time: 16 days
- API modules: 20+
- Withdrawal methods: 14+
- Product categories: 6
Challenge
What was needed wasn’t a showcase but a working marketplace: with money, buyer–seller disputes, files released only after payment, and protection against overselling limited-stock items.
Solution
A pnpm-workspaces monorepo: a React 18 + TypeScript frontend and a NestJS + TypeScript backend sharing a types package. Postgres via Prisma, Redis for queues and cache, MinIO/S3 for files, Socket.IO for real time, BullMQ for background jobs — all brought up with Docker Compose.
Highlights
React 18 + NestJS + Postgres · Prisma + Redis + MinIO · Socket.IO + BullMQ · Docker Compose
What was built
- Sign-up with email confirmation, password recovery and login via the Telegram Login Widget
- JWT authentication with refresh tokens, 2FA (TOTP) and password hashing
- A role system with granular permissions: buyer, seller, moderator, admin
- A catalogue with categories, search, filters and product cards
- A seller storefront with a custom banner (upload, crop and zoom right in the browser) and a description
- Product file uploads with versioning, a changelog and delivery via presigned S3 links — only after purchase
- Wallet: balance, transaction history, a 14-day hold after a sale, withdrawals to card/crypto via CrystalPay
- Real withdrawal methods and their limits come straight from the payment gateway’s API rather than being hard-coded
- Buyer–seller disputes with admin resolution and refunds
- Per-order chat between buyer and seller
- Reviews and a seller rating aggregated from real ratings, not per product
- A referral programme with bonus payouts
- Notifications: in-app, by email (Resend) and via a Telegram bot with account linking
- Admin panel: product moderation, user management, action logs, banners, promo codes, platform settings
- Race-condition protection when buying limited-stock items
- SEO: sitemap.xml, robots.txt, meta tags on product pages
- Dark theme, responsive layout on Tailwind CSS
- Docker Compose for local development and production, Prisma migrations
Stages
- Design (2 days) — Database schema, role model, wallet and hold architecture, payment gateway integration
- Backend (5 days) — NestJS API, Prisma models, S3 file uploads, payments and withdrawals, BullMQ queues
- Frontend (4 days) — Catalogue, product page, seller dashboard, wallet, order chat, storefront
- Moderation and security (3 days) — Admin panel, 2FA, disputes, anti-fraud checks, action logs
- Production (2 days) — Docker Compose, server deployment, email/Telegram integrations, optimisation
Next project: Apex