Store home
Hero with featured product, guarantees, categories, best sellers, editorial banner, new arrivals and newsletter.
src/pages/index.astro 1 GitHub star = 1 new component. We’re at stars — help us unlock the next one.
Star the repoA complete, accessible online store: home, catalogue, product page, cart and checkout.
Nova Store is a production-ready e-commerce template for Astro. Five pages share one cart that persists in the browser, the catalogue filters instantly without a backend, and the checkout validates, totals shipping, tax and promo codes and confirms the order. Every block is a library component, so you can use the whole store or just the pieces you need.
Every page is a real, interactive preview — the cart is shared between them.
Hero with featured product, guarantees, categories, best sellers, editorial banner, new arrivals and newsletter.
src/pages/index.astro Catalogue with breadcrumb, category chips, sticky filters, live result count and sorting.
src/pages/shop.astro Gallery, buy box with colour/size pickers and quantity, reviews summary and related products.
src/pages/product/[slug].astro Focus-mode checkout with steps, contact, delivery, shipping, payment and live order summary.
src/pages/checkout.astro npm install astro-component-kit npm install astro-component-kit src/pages/index.astro
---
import { StoreHomePage } from 'astro-component-kit/templates/ecommerce';
---
<StoreHomePage /> ---
import { StoreHomePage } from 'astro-component-kit/templates/ecommerce';
---
<StoreHomePage /> src/pages/shop.astro
---
import { StoreCategoryPage } from 'astro-component-kit/templates/ecommerce';
---
<!-- Category links use /shop/?category=audio -->
<StoreCategoryPage /> ---
import { StoreCategoryPage } from 'astro-component-kit/templates/ecommerce';
---
<!-- Category links use /shop/?category=audio -->
<StoreCategoryPage /> src/pages/product/[slug].astro
---
import { StoreProductPage, demoStore } from 'astro-component-kit/templates/ecommerce';
export function getStaticPaths() {
return demoStore.products.map((p) => ({ params: { slug: p.slug } }));
}
---
<StoreProductPage slug={Astro.params.slug} /> ---
import { StoreProductPage, demoStore } from 'astro-component-kit/templates/ecommerce';
export function getStaticPaths() {
return demoStore.products.map((p) => ({ params: { slug: p.slug } }));
}
---
<StoreProductPage slug={Astro.params.slug} /> src/pages/checkout.astro
---
import { StoreCheckoutPage } from 'astro-component-kit/templates/ecommerce';
---
<StoreCheckoutPage /> ---
import { StoreCheckoutPage } from 'astro-component-kit/templates/ecommerce';
---
<StoreCheckoutPage /> Spread the demo store and replace what you need. Products accept a real image or one of 16 built-in illustrations.
---
// src/pages/index.astro — same store + routes on every page
import { StoreHomePage, demoStore, type StoreConfig } from 'astro-component-kit/templates/ecommerce';
const store: StoreConfig = {
...demoStore,
name: 'My Shop',
currency: 'EUR',
locale: 'es-ES',
cartKey: 'my-shop-cart',
products: [
{
slug: 'linen-shirt',
name: 'Linen Shirt',
price: 59,
category: 'apparel',
image: '/products/linen-shirt.webp', // or icon: 'shirt'
sizes: ['S', 'M', 'L'],
rating: 4.7,
reviews: 40,
},
],
};
---
<StoreHomePage store={store} routes={{ home: '/', shop: '/shop/', product: '/product/', checkout: '/checkout/' }} /> ---
// src/pages/index.astro — same store + routes on every page
import { StoreHomePage, demoStore, type StoreConfig } from 'astro-component-kit/templates/ecommerce';
const store: StoreConfig = {
...demoStore,
name: 'My Shop',
currency: 'EUR',
locale: 'es-ES',
cartKey: 'my-shop-cart',
products: [
{
slug: 'linen-shirt',
name: 'Linen Shirt',
price: 59,
category: 'apparel',
image: '/products/linen-shirt.webp', // or icon: 'shirt'
sizes: ['S', 'M', 'L'],
rating: 4.7,
reviews: 40,
},
],
};
---
<StoreHomePage store={store} routes={{ home: '/', shop: '/shop/', product: '/product/', checkout: '/checkout/' }} /> Built for this template and available on their own in the library.
Shop navbar with category dropdowns, search, account and a cart button whose badge updates live; collapses to a mobile menu.
Slim announcement bar with rotating messages, pause on hover and a dismiss button remembered per session.
Slide-in cart with quantity steppers, remove, free-shipping progress and subtotal. Accessible modal with focus trap.
Shop landing hero with gradient headline, CTAs, proof stats and a floating featured-product stage.
Category grid with illustrated tiles, product counts and an animated arrow.
Row of store guarantees — shipping, returns, secure payment and support — in card, inline or divided style.
Shop product tile with illustration or photo, badge, star rating, colour swatches, compare-at price, wishlist toggle and add-to-cart.
Responsive grid of product cards with an empty state — the target of FilterSidebar and ProductToolbar.
Category, price, colour, rating and stock filters that filter and sort a ProductGrid instantly, synced with the URL.
Catalogue heading with a live result count and a ModernSelect sort control wired to FilterSidebar.
Product image viewer with large stage and keyboard-navigable thumbnails; generates illustrated angles when there are no photos.
Colour swatches or size pills as a native radio group that keeps an add-to-cart button in sync.
Product detail purchase panel: price, savings, colour/size pickers, quantity stepper, add to cart, buy now and expandable details.
Checkout sidebar with cart lines, promo codes, shipping, tax and a live total that follows the chosen shipping method.
One-page checkout — contact, delivery, shipping and payment — with autocomplete hints, validation and an animated confirmation.
Product visual: a real photo, or a hue-tinted backdrop with one of 16 line-art product illustrations.
Read-only star rating with fractional fill, value and review count, exposed as a single accessible label.
Live stacked notifications: "Added to cart" with a View cart action, plus any custom notice sent through the ack:notify event.
Rotating social-proof notice of recent purchases that slides in and out; pauses on hover and can be dismissed for the session.
Live sale countdown with days, hours, minutes and seconds, a CTA and an ended state; fixed date or rolling per-visitor deadline.
Low-stock urgency notice with a level bar and a live "people viewing" counter for product pages.
Framework-free cart state shared by every shop component: localStorage persistence, cross-tab sync, add-to-cart binding and money formatting.
Existing components the template is assembled from.