Alexey Belov
← All projects

DJ-M Shop

An e-commerce store for DJ equipment parts and accessories on Next.js (Pages Router) and Strapi — full development cycle: from database architecture to a production-ready interface.

Next.jsStrapiTypeScriptPostgresqlPrismaTailwind

Task

The goal was a catalog store selling original and used DJ equipment parts (pads, sliders, PCBs, drives, and more) with flexible filtering by brand, category, and condition, a clean product page and cart — with a catalog the manager could update without a developer.

Result

  • A fully working store with a catalog editable through Strapi — new products, brands, and categories go live without a frontend deploy.
  • A cart that persists across visits and works correctly when a user returns to the site.
  • A flexible filtering and categorization system that scales to new brands and part types without code changes.

Solution

  • Frontend on Next.js (Pages Router) + TypeScript + Tailwind: a filterable, paginated catalog (FilterBar, MultiSelect, Dropdown, Pagination), product cards, brand and set pages, and a dedicated product page with slug-based routing.
  • CMS integration with Strapi: content and catalog data (brands, categories, products, offers with price/condition/stock) are managed through Strapi Admin; a custom API proxy (/api/strapi/[...path]) hides Strapi tokens from the client and simplifies frontend requests.
  • Server-side logic and architecture: PostgreSQL as Strapi's datastore, dedicated API routes for brands and categories, cart state in Zustand persisted to localStorage (hydrated behind a hasHydrated flag for correct SSR/CSR behavior), with data fetching and caching via React Query.
  • A UI kit built on Radix UI + shadcn/ui (dialogs, accordions, dropdown menus, popovers) and Embla/Swiper carousels for the popular-products showcase.