ViteReactE-commerce

aura-storefront — Vite Ecommerce Template

By Giogfr

A front-end e-commerce storefront template built with React 19, TypeScript, Vite, and Tailwind CSS v4, covering product browsing, filtering, cart, wishlist, and a simulated checkout flow, with no backend or real payments.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-17View source

What stands out

A quick read of the recorded project description.

01

Responsive layout with a sticky header, announcement bar, mega menu, and mobile navigation drawer

02

Product catalog with faceted filtering (category, price, stock, color, size), sorting, grid density adjustment, and load more

03

Product detail pages with an image gallery, variant selection, quantity stepper, specification accordion, size guide, and related products

04

Slide-out cart and wishlist with quantity management, cross-sell, free-shipping progress, and promo codes

05

Multi-step simulated checkout with information, shipping, and payment steps, field validation, and an order confirmation page

06

Navigation synced with the URL query string, supporting deep links and browser history navigation

Template Details

AURA is a front-end e-commerce storefront template built with React 19, TypeScript, Vite, and Tailwind CSS v4. It provides a responsive product grid, faceted filtering, product detail pages, a slide-out cart, a wishlist, quick view, search, and a multi-step simulated checkout flow. Navigation state syncs with the URL query string, supporting deep links and browser forward/back navigation. The cart and wishlist persist to localStorage and are validated on load. The template does not include a backend, database, payment, or email service; checkout, accounts, orders, reviews, and subscriptions are all client-side simulations. The README explicitly states that this is a front-end template rather than an operating store, and that simulated logic must be replaced and placeholder legal text updated before use.

ViteReactE-commerce

Is it right for your project?

Use Cases

  • Developers who need to quickly build an e-commerce front-end interface prototype or demo
  • Learning how React 19, TypeScript, and Tailwind CSS v4 apply to modern e-commerce scenarios
  • Using it as a front-end template base for later integration with real backend, payment, and authentication services
  • Static sites that demonstrate product browsing, filtering, cart, and checkout interaction flows

Suitable For

  • Front-end developers or teams building e-commerce storefront UI
  • Teaching or demonstration purposes showing e-commerce interaction flows
  • A starting point to customize into the front-end portion of a complete e-commerce application

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requires Node.js 20.19 or higher

  2. 2

    Install dependencies with npm install and start the development server with npm run dev

  3. 3

    Run npm run build to generate a production build and npm run preview to preview locally

  4. 4

    Use npm run typecheck for type checking and npm test to run unit tests

  5. 5

    The template has no backend; checkout, accounts, reviews, and similar features are simulated and must be replaced with real services before production use

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version under the MIT license in the public repository; the free scope is that version's code and does not mean external services or third-party assets are free.

Must comply with when using

  • The code of this version may be used, modified, used commercially, and distributed free of charge.
  • When distributing copies or substantial portions of the code, the original author's copyright notice and the full MIT license notice must retain.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone does not determine their terms.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
  • This is a front-end template, not an operating store: it has no backend, database, payment, or email service; checkout, accounts, orders, reviews, and subscriptions are client-side simulations.
  • Images come from Unsplash and are for demonstration only; the MIT license covers only the code, not third-party images or sample data content, whose terms must be replaced or verified before commercial use.
  • Brand names, copy, prices, product data, reviews, and policies are fictional sample content and must be replaced; the demo does not represent a real business, certification, partnership, or service.
  • Legal/policy text is placeholder content for demonstration and must be replaced before production use.
  • Multi-currency conversion rates are static sample values, not live exchange rates, and are labeled as such in the UI.
  • The built-in exchange rates are static sample values for demonstration and must be replaced with an exchange-rate API or provider in production.
  • The Plus Jakarta Sans font is loaded from Google Fonts and requires network access or self-hosting.
  • Running requires Node.js 20.19 or higher.
  • Before production use, simulated flows must be replaced with real integrations and the placeholder legal/policy text updated accordingly.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

> **This is a front-end template, not a working store.** There is no backend, no database, and no payment or email provider. Checkout, accounts, orders, reviews, and newsletter signup are all simulated client-side for demonstration purposes. Please read [Demo data & simulated behavior](#demo-data--simulated-behavior) before using it as a starting point.

Original README

- **Images** are loaded from [Unsplash](https://unsplash.com) and are included for demonstration only. The MIT license covers this template's code — **not** the third-party images or any content inside the sample data. Unsplash photos are governed by the [Unsplash License](https://unsplash.com/license); replace them with your own assets (or verify their terms) before commercial use.

Original README

- **Brand name, copy, prices, product data, reviews, and policies** are fictional sample content intended to be replaced. Nothing in the demo represents a real business, certification, partnership, or service.

Original README

| **Policies** | Placeholder legal text for demonstration. |

Original README

- Multi-currency switcher in both the header and footer (USD, EUR, GBP, CAD, AUD) with configurable conversion rates. Rates are static **sample** values, not live exchange rates, and are labeled as such in the UI.

Original README

Currency options and conversion rates live in `src/context/StoreContext.tsx` (`availableCurrencies`). `formatPrice()` applies the active rate and symbol. The bundled rates are **static sample values for the demo**, not live exchange rates — swap them for a rates API or provider when you go to production.

Original README

- The UI uses **Plus Jakarta Sans**, loaded from Google Fonts in `index.html`. Swap the `<link>` and the `font-family` stack in `src/index.css` to change it.

Original README

- **Node.js 20.19+** (see [`.nvmrc`](./.nvmrc))

Original README

Replace these with real integrations before production use, and update the placeholder legal/policy text accordingly.

Original README
https://github.com/Giogfr/aura-storefront/blob/main/LICENSEhttps://github.com/Giogfr/aura-storefront/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-17. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 85 / 100
Technologies
Vite · React
Website type
E-commerce
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-10-17
Screenshot last checked
2026-10-17

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Vite as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: codex-user-requested-batch-review-20261018 · 2026-10-18

Inspect the recorded source material

SHA-256: 1a24a3cb3ce944b4b438d653e09e27afe77e98b502ab4e629d9bd93e6a2f416f

2026-10-17T01:26:26.563Z

Source file / repository
# AURA — Modern Ecommerce Storefront Template

A polished, modern, and highly modular ecommerce storefront template built with **React 19**, **TypeScript**, **Vite**, and **Tailwind CSS v4**. It ships with responsive product grids, faceted filtering, rich product pages, a slide-out cart, wishlist, quick view, search, and an end-to-end (simulated) checkout.

[![license](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
[![CI](https://github.com/Giogfr/aura-storefront/actions/workflows/ci.yml/badge.svg)](https://github.com/Giogfr/aura-storefront/actions/workflows/ci.yml)
[![React](https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=white)](https://react.dev)
[![Vite](https://img.shields.io/badge/Vite-8-646CFF?logo=vite&logoColor=white)](https://vite.dev)
[![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-v4-06B6D4?logo=tailwindcss&logoColor=white)](https://tailwindcss.com)
[![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)

**Live demo:** [aura-storefront-gio.vercel.app](https://aura-storefront-gio.vercel.app/)

> **This is a front-end template, not a working store.** There is no backend, no database, and no payment or email provider. Checkout, accounts, orders, reviews, and newsletter signup are all simulated client-side for demonstration purposes. Please read [Demo data & simulated behavior](#demo-data--simulated-behavior) before using it as a starting point.

---

## Table of contents

- [Features](#features)
- [Tech stack](#tech-stack)
- [Requirements](#requirements)
- [Getting started](#getting-started)
- [Scripts](#scripts)
- [Project structure](#project-structure)
- [How routing works](#how-routing-works)
- [State management](#state-management)
- [Customization](#customization)
- [Accessibility](#accessibility)
- [Demo data & simulated behavior](#demo-data--simulated-behavior)
- [Promo codes](#promo-codes)
- [Testing](#testing)
- [Deployment](#deployment)
- [Troubleshooting](#troubleshooting)
- [Assets & licensing](#assets--licensing)
- [Contributing](#contributing)
- [License](#license)

## Features

**Layout & navigation**
- Mobile-first, responsive layout with a sticky header, rotating announcement bar, mega menu, and a slide-out mobile navigation drawer.
- Deep-linkable navigation: every view is reflected in the URL query string and the browser back/forward buttons.
- Multi-currency switcher in both the header and footer (USD, EUR, GBP, CAD, AUD) with configurable conversion rates. Rates are static **sample** values, not live exchange rates, and are labeled as such in the UI.

**Catalog**
- Shop page with faceted filtering (category, price range, availability, colors, sizes), sorting, adjustable grid density (2/3/4 columns), and "load more" pagination.
- Curated deep-links (e.g. `?page=shop&filter=sale`) that apply an archive-sale, new-arrivals, or bestseller view.
- Collections directory and per-category landing views.

**Product detail**
- Image gallery with hover cross-fade, fullscreen lightbox, and keyboard navigation.
- Variant selection (color/size), quantity stepper, sticky add-to-cart bar, specification accordions, an interactive size guide, related products, and recently-viewed rail.
- Session-only product reviews with a submission form.

**Cart, wishlist & checkout**
- Slide-out cart and wishlist drawers with quantity management, cross-sell suggestions, and free-shipping progress.
- Promo codes, order notes, and `localStorage` persistence for the cart and wishlist.
- A multi-step checkout (information → shipping → payment) that gates each step, validates required fields before advancing, and supports back/next navigation, shipping methods, a promo field, order summary, and an empty-bag guard.
- A demo confirmation screen with a generated order reference.

**Search & content**
- Instant search overlay with tokenized matching and a dedicated search results page.
- About, Contact, FAQ, Shipping & Returns, Legal (privacy/terms), and a 404 page.

**Foundations**
- Strict TypeScript, semantic/accessible components, and `prefers-reduced-motion` support.

## Tech stack

| Layer | Choice |
| --- | --- |
| UI | [React 19](https://react.dev) |
| Language | [TypeScript](https://www.typescriptlang.org) (`strict`) |
| Build tool | [Vite](https://vite.dev) |
| Styling | [Tailwind CSS v4](https://tailwindcss.com) via `@tailwindcss/vite` |
| Icons | [lucide-react](https://lucide.dev) |
| State | React Context + hooks (no state library) |
| Routing | Lightweight internal navigation state synced with the URL (no router dependency) |

## Requirements

- **Node.js 20.19+** (see [`.nvmrc`](./.nvmrc))
- npm (or pnpm/yarn — adjust commands accordingly)

## Getting started

```bash
# install dependencies
npm install

# start the dev server (http://localhost:5173)
npm run dev

# type-check
npm run typecheck

# run the unit tests
npm test

# production build into dist/
npm run build

# preview the production build locally
npm run preview
```

## Scripts

| Script | Description |
| --- | --- |
| `npm run dev` | Start the Vite dev server with HMR. |
| `npm run build` | Create a production build in `dist/`. |
| `npm run preview` | Serve the production build locally. |
| `npm run typecheck` | Run `tsc --noEmit` in strict mode. |
| `npm test` | Run the unit test suite once with [Vitest](https://vitest.dev). |
| `npm run test:watch` | Run tests in watch mode. |
| `npm run clean` | Remove the `dist/` directory. |

CI runs `typecheck`, `test`, and `build` on every push to `main` and on pull requests (see [`.github/workflows/ci.yml`](./.github/workflows/ci.yml)).

## Project structure

```
src/
├─ components/
│  ├─ common/     # CartDrawer, WishlistDrawer, SearchOverlay, QuickViewModal,
│  │              # ProductCard/Grid, AccountModal, Toast, Breadcrumbs
│  └─ layout/     # Header, Footer, MobileMenu
├─ context/       # StoreContext — global store (cart, wishlist, currency, nav, toasts, account)
├─ data/          # products.ts, storeConfig.ts — the template's content/data source
├─ lib/           # Pure, unit-tested helpers: cart validation, promos, routing, currency
├─ pages/         # One component per route/page
├─ types.ts       # Shared TypeScript types
├─ index.css      # Tailwind entry + custom keyframes/utilities
├─ App.tsx        # Page switching + global overlays
└─ main.tsx       # React root
public/
├─ favicon.svg
├─ site.webmanifest
└─ robots.txt
.github/
└─ workflows/ci.yml
```

## How routing works

There is **no router dependency**. `StoreContext` holds `currentPage` and `routeParams` and exposes a `navigateTo(page, params?)` helper. Each navigation:

1. updates React state, and
2. writes a query string to the URL (e.g. `?page=shop&cat=footwear`).

On mount and on `popstate` (back/forward), the query string is parsed back into state, so views are shareable and bookmarkable. Supported params: `page`, `id` (product), `cat` (category), `q` (search), and `filter` (curated view).

## State management

All cross-cutting state lives in a single `StoreProvider` (`src/context/StoreContext.tsx`):

- **Navigation** — `currentPage`, `routeParams`, `navigateTo`.
- **Currency** — `activeCurrency`, `availableCurrencies`, `formatPrice`.
- **Cart** — items, derived totals (subtotal, discount, shipping, tax, grand total), add/remove/update, promo codes.
- **Wishlist** — saved product IDs.
- **UI** — quick view, search overlay, account modal, and toast state.
- **History** — recently viewed products and recent searches.

Cart and wishlist are persisted to `localStorage`; everything else is in-memory for the session.

## Customization

Most of the storefront is driven by two files:

### Store configuration — `src/data/storeConfig.ts`

Store name and tagline, announcement-bar messages, free-shipping threshold, standard/express shipping fees, contact details, social links, category definitions, FAQ content, homepage promotional banners, and the Instagram grid.

### Product catalog — `src/data/products.ts`

The full product dataset: pricing (`price`, `compareAtPrice`, `isSale`), merchandising flags (`isNew`, `isFeatured`, `isBestSeller`), inventory, images, colors, sizes, descriptions, specifications, materials, care instructions, shipping info, and reviews.

### Currency

Currency options and conversion rates live in `src/context/StoreContext.tsx` (`availableCurrencies`). `formatPrice()` applies the active rate and symbol. The bundled rates are **static sample values for the demo**, not live exchange rates — swap them for a rates API or provider when you go to production.

### Theming & styling

- Tailwind CSS v4 is wired through `@tailwindcss/vite` and imported in `src/index.css` — there is no `tailwind.config.js` to maintain.
- Global tokens (fonts, focus rings, custom scrollbar), keyframe animations, and utilities such as `.no-scrollbar` are defined in `src/index.css`.
- Initial theme color and base background/text colors are set in `index.html`.

### Fonts & icons

- The UI uses **Plus Jakarta Sans**, loaded from Google Fonts in `index.html`. Swap the `<link>` and the `font-family` stack in `src/index.css` to change it.
- Icons come from `lucide-react`; import only what you use.

## Accessibility

- Semantic `<button>` elements for all interactive controls, with `aria-label`s and visible focus rings.
- Dialog semantics (`role="dialog"`, `aria-modal`) on drawers/modals, with `Escape` to close and background scroll locking.
- `aria-expanded`, `aria-pressed`, `aria-selected`, and `aria-live` states for toggles, menus, and toasts.
- Associated `<label>`/`id` pairs on form fields.
- A `prefers-reduced-motion` block disables animations/transitions for users who request it.

## Demo data & simulated behavior

The template intentionally includes interactive flows so you can explore the UX end to end. None of them connect to real services:

| Area | What actually happens |
| --- | --- |
| **Checkout** | Generates a local order reference and clears the cart. **No payment is processed.** |
| **Express checkout** | Shop Pay / Apple Pay / PayPal show a "simulated" toast. |
| **Accounts** | Sign in without authentication; nothing is stored remotely. |
| **Orders & addresses** | Illustrative sample content in the account modal. |
| **Reviews** | Added to local component state for the session only. |
| **Contact form & newsletter** | Capture input but send nothing. |
| **Policies** | Placeholder legal text for demonstration. |

Replace these with real integrations before production use, and update the placeholder legal/policy text accordingly.

### Checkout totals (demo rules)

Totals are computed consistently and intentionally:

- **Subtotal** — sum of line prices × quantities.
- **Discount** — the promo-code rate applied to the subtotal.
- **Shipping** — free when `FREESHIP` is applied or the subtotal reaches the free-shipping threshold; otherwise the standard fee. Choosing express shipping always uses the express fee.
- **Estimated tax** — a fixed 8% (`TAX_RATE` in `src/lib/storeUtils.ts`) applied to the discounted **merchandise** subtotal only; shipping is not taxed.
- **Total** — discounted subtotal + shipping + tax.

Cart and wishlist data in `localStorage` is validated on load: malformed entries, unknown products, and sold-out products are dropped, and quantities are clamped to available stock. Products with zero inventory can never be added to the cart.

## Promo codes

A few promo codes are pre-wired as examples (case-insensitive):

| Code | Effect |
| --- | --- |
| `WELCOME10` | 10% off the order |
| `SAVE20` | 20% off the order |
| `FREESHIP` | Waives standard shipping |

## Testing

Unit tests cover the pure store helpers in `src/lib/` — cart validation and stock clamping, promo-code resolution, currency formatting, and route parsing — and run with [Vitest](https://vitest.dev):

```bash
npm test          # single run
npm run test:watch
```

Tests live next to the code they cover (e.g. `src/lib/storeUtils.test.ts`). Add tests alongside new pure logic, and extend the suite as you grow the storefront.

## Deployment

The project builds to a static `dist/` folder and can be hosted anywhere that serves static files.

- **Build command:** `npm run build`
- **Output directory:** `dist`

For Vercel, Netlify, GitHub Pages, or any static host, set the build command and output directory above. Because routing is query-string based (not path based), no SPA rewrite rules are required.

## Troubleshooting

- **Blank page after deploy** — confirm the host serves `index.html` at the site root and that assets resolve (the Vite `base` is `/` by default).
- **Fonts look different locally** — the font is fetched from Google Fonts; ensure network access or self-host it.
- **Cart/wishlist appears stale** — state is cached in `localStorage`. Clear site data for the origin to reset.

## Assets & licensing

- **Source code** is released under the [MIT license](./LICENSE).
- **Images** are loaded from [Unsplash](https://unsplash.com) and are included for demonstration only. The MIT license covers this template's code — **not** the third-party images or any content inside the sample data. Unsplash photos are governed by the [Unsplash License](https://unsplash.com/license); replace them with your own assets (or verify their terms) before commercial use.
- **Brand name, copy, prices, product data, reviews, and policies** are fictional sample content intended to be replaced. Nothing in the demo represents a real business, certification, partnership, or service.

## Contributing

Contributions are welcome. Please keep the template framework-free beyond its existing dependencies, run `npm run typecheck` and `npm test` before opening a pull request, and match the existing code style (no extra comments unless necessary, semantic HTML, accessible controls).

## License

[MIT](./LICENSE) © 2026 Giogfr
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.