Headless for brands with a site

YOUR MARKETING SITE.
NOW SHOPPABLE.

You don't need another theme. You need one fetch. Keep your Next.js site exactly as it is — plug Nexus in for products, cart, and Razorpay. One API, your domain, no rebuild.

Razorpay (UPI / Card / Wallet) + COD · INR · Your domain · Your SEO

1. Headless API — recommended

Your site stays your site. Fetch from Nexus, render with your components, checkout via Nexus.

No rebuild

2. Buy Button

Drop <BuyButton /> on any page — Next.js, Webflow, HTML. One variant, one click to Razorpay.

3. Hosted shop

Need it live today? Your catalog at /shop/yourbrand instantly.

4 STEPS TO LIVE

Keep your site. Add commerce. No schema fork.

01

Create store — 15 sec

Register → onboarding → pick subdomain yourbrand → INR → dashboard. One store per account, isolated by storeId.

POST /api/auth/register { email, password }
POST /api/stores/update { name: "Your Brand", subdomain: "yourbrand", currency: "INR" }
// Store isolated by JWT storeId

02

Add products — one schema for anything

Same form for any product: title, vendor, productType, tags, price, stock, images. No hard-coded categories.

Example A

Canvas Tote — Natural

vendor: Your Brand · type: tote · tags: canvas, everyday · ₹1,800

Example B — same schema

Refill Kit — 3 Pack

vendor: Your Brand · type: kit · tags: refill · ₹2,400

03

Connect Razorpay — per store, India-native

Settings → Payments → paste Key ID / Secret (live or test) → toggle COD. Keys stay in DB, never in code.

Razorpay connected

rzp_live_•••• · COD: ON · INR

India-native

04

One fetch in your site

In any page, fetch Nexus. Render your grid, your PDP. Copy the URL from Settings → API.

app/products/page.tsx

const { products } = await fetch(
  "https://bluenexus.vercel.app/api/storefront/yourbrand/products?limit=24",
  { next: { revalidate: 60 } }
).then(r => r.json());
return <Grid products={products} />

BuyButton.tsx

import { BuyButton } from "@/components/shop/buy-button";
<BuyButton
  variantId={product.variants[0].id}
  subdomain="yourbrand"
  price={Number(v.price)}
  codEnabled
/>
// → POST /checkout → Razorpay → POST /verify → PAID
GET /products?tag=featuredPOST /checkoutPOST /verify

Result: Your site is now a store. Your domain, your design — Nexus handles cart → checkout → orders.

Secured at every layer

Middleware blocks /admin/* without JWT. APIs check storeId from JWT or x-admin-token. Storefront reads are public; writes verify Razorpay signature with that store's secret.