Ecommerce storefront
A product catalog with category filters and search, product detail view, and a cart kept in local state.
Catalog, product detail and cart screens driven by a typed in-memory product list. The cart is persisted to localStorage through a small hook, quantities can be adjusted inline, and the checkout form is explicitly a placeholder: it records the order locally and tells you where to plug in Stripe or Razorpay on the server.
- react
- ecommerce
- cart
- catalog
- tailwind
This preview is the template's actual file tree and source code — exactly what is copied into a new project. Codexa does not publish screenshots or mock-ups of templates; run the project to see it rendered.
Files13 files
import { useLocalStorage } from "./useLocalStorage";
import { products } from "./products";
export type CartLine = { productId: string; qty: number };
export function useCart() {
const [lines, setLines] = useLocalStorage<CartLine[]>("cart", []);
const add = (productId: string) =>
setLines((prev) => {
const existing = prev.find((l) => l.productId === productId);
if (existing) return prev.map((l) => (l.productId === productId ? { ...l, qty: l.qty + 1 } : l));
return [...prev, { productId, qty: 1 }];
});
const setQty = (productId: string, qty: number) =>
setLines((prev) => (qty <= 0 ? prev.filter((l) => l.productId !== productId) : prev.map((l) => (l.productId === productId ? { ...l, qty } : l))));
const clear = () => setLines([]);
const items = lines
.map((l) => ({ ...l, product: products.find((p) => p.id === l.productId) }))
.filter((l): l is CartLine & { product: NonNullable<(typeof products)[number]> } => Boolean(l.product));
const total = items.reduce((s, l) => s + l.product.price * l.qty, 0);
const count = items.reduce((s, l) => s + l.qty, 0);
return { items, total, count, add, setQty, clear };
}
Dependencies
Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.
| Package | Version |
|---|---|
| react | ^19.1.0 |
| react-dom | ^19.1.0 |
| vite | ^6.3.0 |
| @vitejs/plugin-react | ^4.4.0 |
| tailwindcss | ^4.1.0 |
| @tailwindcss/vite | ^4.1.0 |
| typescript | ^5.8.0 |
How it runs
- Framework
- Vite + React + TypeScript
- Dev command
- npm run dev
- Build command
- npm run build
- Output directory
- dist
- Port
- 5173
- Opens at
- /
- Difficulty
- intermediate
Projects run in an isolated sandbox with a live preview. Read the projects documentation for details on settings, snapshots and deployment.
Need the raw data? GET /api/v1/templates/vite-react-storefront returns this template with its files.
Build on Ecommerce storefront
Create a free account, start from this template, and ask the AI agent to turn it into your app.