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.
apps/storefront-template
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.
- 1
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 - 2
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 - 3
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 - 4
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; } } - 5
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.