Alexey Belov
← All projects

Sladkoru

An e-commerce store for Turkish sweets: design, frontend, backend, SEO, and deployment — full cycle.

Next.jsReactTypeScriptNestJSPostgreSQLPrismaDockerNginx

Task

Build a Turkish sweets e-commerce store from scratch: a storefront with a catalog and product cards, checkout without prepayment (with a manager notification), and a full admin panel for running the store without a developer — products, categories, media, orders, articles, and content moderation.

Result

  • The business owner manages all site content — products, prices, articles, and orders — independently, without a developer.
  • The site is fully production-ready: a fast, SEO-optimized storefront and a stable admin panel with an error log and access control, running in a single Docker environment.

Solution

  • A pnpm workspaces monorepo with a shared contracts package (Zod schemas + types) that is the single source of truth for DTOs between frontend and backend — eliminates type drift between layers.
  • Frontend on Next.js App Router, split into a public storefront (RSC, caching) and a protected admin area; backend on NestJS with a layered controller → service → Prisma architecture, JWT auth in httpOnly cookies (jose + argon2) with session versioning for instant access revocation.
  • The admin panel covers: CRUD for products and categories (with manual ordering and featured slots), image upload and WebP conversion via sharp, a Notion-style block editor for articles, user-content moderation, an error log, and a session security section.
  • An SEO module generating metadata and structured data server-side; automatic tag-based page cache invalidation when admin data changes (backend webhook → revalidate API); order and inquiry notifications via email (SMTP) and Telegram.
  • Deployed on Docker (separate frontend/backend images), PostgreSQL as the primary datastore, Nginx as a reverse proxy on a VPS; separate Docker modes for local development and production-like checks before release.