Back to work
Full-stack·2026·Moto Motion Centar

Moto Motion Centar

A bilingual vehicle and riding-gear catalog, now live on the client's production domain.

Next.js 16TypeScriptSanityCloudflare Workersnext-intl
Context
Moto Motion Centar needed a production-ready digital showroom for a large vehicle and riding-gear catalog, without forcing customers or staff into an online checkout workflow that did not match how the business sells.
Timeline
Shipped 2026
Role
Strategy, UX, architecture, full implementation, deployment
Catalog
19 vehicles · 142 gear products
Languages
Macedonian + English
Delivery
Sanity → Cloudflare

What I built

  • A responsive showroom for 19 vehicles, with category navigation, specifications, colors, galleries, related models, and product-specific enquiries.
  • A searchable, filterable catalog of 142 helmets, apparel, protection products, and motorcycle accessories.
  • Macedonian-first routing with a complete English version, localized metadata, canonical URLs, and language alternates.
  • A Sanity Studio workflow that lets the client manage vehicles, gear, brands, translations, ordering, and media without touching the codebase.
  • Privacy-aware analytics consent, resilient phone and messaging actions, structured data, and production deployment on the client's domain.

Architecture

Frontend
Next.js 16React 19TypeScriptTailwind CSS v4Motion
Content
Sanity StudioBuild-time catalog snapshotWebhook-triggered releases
Localization
next-intlMK / EN routesLocalized SEO and structured data
Delivery
OpenNextCloudflare WorkersCloudflare CDNMKhost mail DNS

Interesting decisions

Decision

A catalog, not pretend e-commerce

The real sale happens through the showroom and a conversation. Instead of inventing stock levels, prices, and checkout behavior, the site gives every product a strong detail page and routes interest into phone, WhatsApp, or an in-person visit.

Decision

Sanity at build time

Published catalog changes trigger a new Cloudflare build. The Worker serves a validated static snapshot rather than querying the CMS on every visit, which keeps pages fast, removes a runtime dependency, and leaves a checked-in rollback source.

Decision

Localization is part of the URL model

Macedonian owns the clean default routes and English lives under /en. Canonicals, hreflang links, sitemap entries, product enquiries, and language switching all preserve the visitor's current context instead of treating translation as a cosmetic toggle.

Result

The client now has a public bilingual showroom at motomotion.mk and an editor-owned catalog workflow. The release was exercised across 332 bilingual routes, representative mobile and desktop layouts, keyboard flows, no-JavaScript fallbacks, metadata, security headers, and accessibility checks before the production cutover.

Have a build like this in mind?