● ONLINE // SYCHROV.CZ // DEV PORTFOLIO
DRAGOCZ /
[ CASE // 01 // E-COMMERCE // NEXT.JS + MEDUSA V2 ]

OpravnaBicyklu.cz

Next.js e-shop with Medusa backend — catalog, cart, checkout

// CLIENT
OpravnaBicyklu.cz, Český Dub
// ROLE
DEVELOPER // FULLSTACK, ARCHITECT, DEPLOY
// PERIOD
2024 → 2025
// STATUS
ACTIVE
NEXT.JS 16REACT 19TYPESCRIPTMEDUSA.JS V2POSTGRESQLSTRIPETAILWIND 4PM2

Problem

A bike repair shop needed a website that sells spare parts and accessories online, allows customer registration and order history, runs bilingually in Czech and English, and is fast to maintain.

Stack

┌──────────────────────────────────────────────────────────────────────────┐
│  FRONT  → Next.js 16 (App Router, Turbopack, route-groups)              │
│  STYLE  → Tailwind v4 + framer-motion + lucide-react                    │
│  BACK   → Medusa.js v2 (Postgres, JWT auth, publishable API key)       │
│  SHOP   → /shop, /cart, /checkout, /account (orders + addresses)        │
│  PAYMENT→ Stripe (ready) + manual provider                              │
│  SHIPPING→ Zásilkovna pickup point, CZK pricing                        │
│  HOST   → VPS, PM2 (web:3010 + medusa:9000)                            │
└──────────────────────────────────────────────────────────────────────────┘

Architecture

Two independent runtime applications in one monorepo: a Next.js 16 storefront and a Medusa.js v2 backend.

  • Marketing homepage + service sections + e-shop route group
  • CZ/EN language switch with JSON dictionaries
  • Medusa backend handles catalog, orders, customers, shipping and payments

Results

  • Live e-shop with cart, checkout and payment gateway
  • Bilingual CZ/EN — full website including e-shop and customer zone
  • < 1 s LCP on homepage and shop pages
  • 1 monorepo, 2 processes, 0 external SaaS dependencies besides Stripe
  • Owner manages catalog and orders through Medusa admin
// NEXT_CASE
Sarah-Hair.cz
Next.js e-shop for a hair salon — products, booking, administration