1 GitHub star = 1 new component.

Star the repo
Full templates

E-commerce Store

A 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.

4 pages32 components0 deps

Live preview

Pages

Every page is a real, interactive preview — the cart is shared between them.

Store home

Hero with featured product, guarantees, categories, best sellers, editorial banner, new arrivals and newsletter.

app/page.tsx

Category page

Catalogue with breadcrumb, category chips, sticky filters, live result count and sorting.

app/shop/page.tsx

Product page

Gallery, buy box with colour/size pickers and quantity, reviews summary and related products.

app/product/[slug]/page.tsx

Checkout

Focus-mode checkout with steps, contact, delivery, shipping, payment and live order summary.

app/checkout/page.tsx

What is included

  • Persistent cart with drawer and live badge
  • Instant filters: category, price, colour, rating, stock
  • Checkout with shipping, tax and promo codes
  • Zero runtime dependencies, WCAG AA, mobile-first
  • Product illustrations included — no images needed
  • Light and dark mode with a toggle
  • Live notices: cart toasts, sale countdown, low stock and recent purchases

Install & use

  1. Install the package

    bash
    npm install react-component-kit-ui
  2. Create one route per template page

    app/page.tsx

    tsx
    import { StoreHomePage } from 'react-component-kit-ui/templates/ecommerce';
    
    export default function Page() {
      return <StoreHomePage />;
    }

    app/shop/page.tsx

    tsx
    import { StoreCategoryPage } from 'react-component-kit-ui/templates/ecommerce';
    
    export default function Page() {
      return (
        <>
          {/* Category links use /shop/?category=audio */}
          <StoreCategoryPage />
        </>
      );
    }

    app/product/[slug]/page.tsx

    tsx
    import { StoreProductPage, demoStore } from 'react-component-kit-ui/templates/ecommerce';
    
    export const generateStaticParams = () => demoStore.products.map((p) => ({ slug: p.slug }));
    
    export default async function Page({ params }: { params: Promise<{ slug: string }> }) {
      const { slug } = await params;
      return <StoreProductPage slug={slug} />;
    }

    app/checkout/page.tsx

    tsx
    import { StoreCheckoutPage } from 'react-component-kit-ui/templates/ecommerce';
    
    export default function Page() {
      return <StoreCheckoutPage />;
    }
  3. Use your own catalogue, currency and routes

    Spread the demo store and replace what you need. Products accept a real image or one of 16 built-in illustrations.

    tsx
    import { StoreHomePage, demoStore, type StoreConfig } from 'react-component-kit-ui/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,
        },
      ],
    };
    
    export default function Page() {
      return <StoreHomePage store={store} routes={{ home: '/', shop: '/shop/', product: '/product/', checkout: '/checkout/' }} />;
    }

New e-commerce components 22

Built for this template and available on their own in the library.

Component

Promo Bar

Slim announcement bar with rotating messages, pause on hover and a dismiss button remembered per session.

Component

Cart Drawer

Slide-in cart with quantity steppers, remove, free-shipping progress and subtotal. Accessible modal with focus trap.

Component

Trust Badges

Row of store guarantees — shipping, returns, secure payment and support — in card, inline or divided style.

Component

Store Product Card

Shop product tile with illustration or photo, badge, star rating, colour swatches, compare-at price, wishlist toggle and add-to-cart.

Component

Product Grid

Responsive grid of product cards with an empty state — the target of FilterSidebar and ProductToolbar.

Component

Filter Sidebar

Category, price, colour, rating and stock filters that filter and sort a ProductGrid instantly, synced with the URL.

Component

Product Toolbar

Catalogue heading with a live result count and a ModernSelect sort control wired to FilterSidebar.

Component

Product Gallery

Product image viewer with large stage and keyboard-navigable thumbnails; generates illustrated angles when there are no photos.

Component

Variant Picker

Colour swatches or size pills as a native radio group that keeps an add-to-cart button in sync.

Component

Product Buy Box

Product detail purchase panel: price, savings, colour/size pickers, quantity stepper, add to cart, buy now and expandable details.

Component

Order Summary

Checkout sidebar with cart lines, promo codes, shipping, tax and a live total that follows the chosen shipping method.

Component

Checkout Form

One-page checkout — contact, delivery, shipping and payment — with autocomplete hints, validation and an animated confirmation.

Component

Product Media

Product visual: a real photo, or a hue-tinted backdrop with one of 16 line-art product illustrations.

Component

Product Rating

Read-only star rating with fractional fill, value and review count, exposed as a single accessible label.

Component

Cart Toast

Live stacked notifications: "Added to cart" with a View cart action, plus any custom notice sent through the ack:notify event.

Component

Countdown Banner

Live sale countdown with days, hours, minutes and seconds, a CTA and an ended state; fixed date or rolling per-visitor deadline.

Component

Stock Indicator

Low-stock urgency notice with a level bar and a live "people viewing" counter for product pages.

Component

Cart Store

Framework-free cart state shared by every shop component: localStorage persistence, cross-tab sync, add-to-cart binding and money formatting.

Reused library components

Existing components the template is assembled from.