Web Development — Case Study

Cycle World Pondicherry — Headless Cycle Storefront

A server-rendered, SEO-optimized storefront for a real local cycle retailer — built headless on Next.js and Supabase, with realtime inventory and edge caching that keeps pages loading in under a second.

RoleFull-Stack Developer
TypeHeadless e-commerce
StackNext.js + Supabase
PerformanceSub-second TTFB

A catalogue that needs to rank, and load instantly

Cycle World needed a storefront that real customers would find through search, not just a digital catalogue — which meant SEO and load speed weren't nice-to-haves, they were the point.

Client-rendered product listings are invisible to search engines and slow on first paint — both fatal for a local retailer competing on discoverability. The build needed server-rendered catalogue pages that ranked, product routing that scaled with inventory changes, and a backend that could keep stock data accurate without manual updates.

How it's built

Rendering layer

Built on the Next.js Web Router with server-side rendering for catalogue pages — product listings are fully rendered HTML on first request, optimized for search indexing, with dynamic routing per product.

Data layer

A normalized Supabase Postgres schema backs the catalogue, with Row-Level Security policies enforcing exactly which data each request context can access — no over-permissioned queries reaching the client.

Realtime & delivery

Supabase Realtime keeps inventory in sync as stock changes, while a Vercel deployment pipeline with edge caching pushes rendered pages close to the user — the combination behind the sub-second TTFB.

What it's built with

Frontend
Next.jsWeb Router / SSR
Backend
SupabasePostgresRow-Level SecurityRealtime
Delivery
VercelEdge caching

What it achieves

<1s time-to-first-byte via Vercel edge caching
SSR fully server-rendered, SEO-optimized catalogue
RLS row-level access control on every query
Live realtime inventory sync, no stale stock data
01

SEO shapes the architecture, not just the copy

Choosing SSR over client rendering wasn't a performance afterthought — it was the decision that made the storefront discoverable at all.

02

RLS as the default, not an add-on

Designing the Postgres schema with Row-Level Security from the start avoided retrofitting access control onto a schema that wasn't built for it.

03

Edge caching and realtime can coexist

Balancing aggressive edge caching for speed against realtime inventory accuracy meant being deliberate about what's cached versus what's always fetched live.