From clone to storefront
in 1 day
Next.js 15 skeleton consuming the 8 libs. Fork, configure 3 env vars, customize logo + color — you're live.
What's inside
Everything a real store needs, ready to customize.
Home
Hero carousel + featured products + CTA
Listing with faceted filters
Filters by category, brand, price, tag
Product detail
Gallery, variants, price by list, add to cart
Persistent cart
UUID + expiry, sync with Odoo when logged in
Full wishlist
FAB, drawer, header badge, sync when logged in
Supabase auth
Email/password + social login, recovery, profile
Complete checkout
Addresses, shipping, payment methods, NF-e
Customer dashboard
Orders, downloads, addresses, personal data
Getting started
5 steps from clone to customization.
Clone and install
Fork the monorepo, install dependencies with pnpm. Everything ready for green typecheck and tests.
git clone git@github.com:kmee/k-shop-libs.git
cd k-shop-libs
pnpm install
pnpm typecheck # green
pnpm test # green Configure the template
Edit .env.local with your Odoo, Elasticsearch and Supabase URLs. Just 3 backends.
# Odoo / Shopinvader
NEXT_PUBLIC_ODOO_BASE_URL=https://shop.example.com/shop
# Elasticsearch (server-side)
ELASTICSEARCH_URL=https://elastic.example.com
ELASTICSEARCH_API_KEY=YOUR-KEY
ELASTICSEARCH_PRODUCT_INDEX=products
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://YOUR.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=YOUR-ANON-KEY Run dev server
Default hero carousel, featured products listing from your Elasticsearch, header with search/wishlist/cart, footer.
pnpm --filter storefront-template dev
# → http://localhost:3000 Customize branding
Logo, colors via HSL tokens, footer. The whole UI follows automatically.
/* app/globals.css */
@import "@kmee/shop-ui/tokens.css";
@layer base {
:root {
--primary: 25 100% 50%; /* your color */
--primary-foreground: 0 0% 100%;
--radius: 0.75rem;
}
} Customize pages and flows
Override pages as needed. Add new components consuming shop-react providers.
// app/custom-product/page.tsx
"use client"
import { useCart } from "@kmee/shop-react"
import { ProductCard } from "@kmee/shop-ui"
export default function Page() {
const { addToCart } = useCart()
// ...
} How deep can you customize
From surface branding to custom adapters.
Visual branding
1 dayColors, font, radius, logo, footer. No TypeScript code — just CSS vars.
Page content
2–5 daysTexts, images, hero banners, footer links, FAQ. Plain JSX, easy to edit.
New checkout flows
1–4 weeksB2B quotes, approval levels, custom payment. Compose with existing providers.
Third-party gateway/ERP integration
1–3 weeksCustom adapter plugged in as subclass of OdooHttpClient or ProductService.
Offline mode for evaluation
No real backend? You can mock and see the UI running.
If you just want to evaluate the UI without setting up Odoo + Elasticsearch + Supabase, you can mock adapters returning static data. The storefront-template has fallback with FALLBACK_SLIDES and fake products — open app/page.tsx and lib/server.ts for the mock entry point.
For serious evaluation with real data, we suggest plugging into a KMEE Odoo demo instance. Ask in the diagnostic.
Need a custom white-label template?
KMEE delivers the template with your visual identity, B2B/B2C flows tailored, and integrated to your Odoo. You receive it ready to deploy.