ViteReact电商

aura-storefront — Vite 电商模板

作者 Giogfr

基于 React 19、TypeScript、Vite 和 Tailwind CSS v4 的电商店面前端模板,包含商品浏览、筛选、购物车、愿望清单和模拟结账流程,无后端与真实支付。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

2 个预览视图
桌面端首页1 / 2
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 2

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-17查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

响应式布局,包含粘性页头、公告栏、大型菜单和移动端导航抽屉

02

商品目录支持分面筛选(分类、价格、库存、颜色、尺码)、排序、网格密度调整和加载更多

03

商品详情页提供图片画廊、变体选择、数量步进器、规格手风琴、尺码指南和相关商品

04

滑出式购物车与愿望清单,支持数量管理、交叉销售、免运费进度和促销码

05

多步骤模拟结账,包含信息、配送、支付步骤,字段验证和订单确认页

06

导航与 URL 查询字符串同步,支持深链接和浏览器历史导航

模板详细介绍

AURA 是一个前端电商店面模板,使用 React 19、TypeScript、Vite 和 Tailwind CSS v4 构建。它提供响应式商品网格、分面筛选、商品详情页、滑出式购物车、愿望清单、快速查看、搜索以及多步骤模拟结账流程。导航状态与 URL 查询字符串同步,支持深链接和浏览器前进/后退。购物车与愿望清单持久化到 localStorage,并在加载时校验数据。模板不包含后端、数据库、支付或邮件服务,结账、账户、订单、评论和订阅均为客户端模拟。README 明确说明这是前端模板而非可运营商店,使用前需替换模拟逻辑并更新占位法律文本。

ViteReact电商

适合你的项目吗?

适用场景

  • 需要快速搭建电商前端界面原型或演示的开发者
  • 学习 React 19、TypeScript 和 Tailwind CSS v4 在现代电商场景中的应用
  • 作为前端模板基础,后续接入真实后端、支付和认证服务
  • 展示商品浏览、筛选、购物车和结账交互流程的静态站点

适合人群

  • 前端开发者或团队用于构建电商店面 UI
  • 教学或演示目的展示电商交互流程
  • 作为起点定制为完整电商应用的前端部分

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node.js 20.19 或更高版本

  2. 2

    使用 npm install 安装依赖,npm run dev 启动开发服务器

  3. 3

    运行 npm run build 生成生产构建,npm run preview 本地预览

  4. 4

    使用 npm run typecheck 进行类型检查,npm test 运行单元测试

  5. 5

    模板无后端,结账、账户、评论等均为模拟,生产使用前需替换为真实服务

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 这是前端模板而非可运营商店:无后端、数据库、支付或邮件服务;结账、账户、订单、评论和订阅均为客户端模拟。
  • 图片来自 Unsplash,仅用于演示;MIT 许可仅覆盖代码,不覆盖第三方图片或示例数据内容,商用前需替换或核实其条款。
  • 品牌名、文案、价格、商品数据、评论和政策均为虚构示例内容,需替换;演示不代表真实企业、认证、合作或服务。
  • 法律/政策文本为演示用占位内容,生产使用前需替换。
  • 多币种换算率为静态示例值,并非实时汇率,UI 中已标注。
  • 内置汇率是演示用静态示例值,生产环境需替换为汇率 API 或服务商。
  • 字体 Plus Jakarta Sans 从 Google Fonts 加载,需网络访问或自行托管。
  • 运行需要 Node.js 20.19 或更高版本。
  • 生产使用前需将模拟流程替换为真实集成,并相应更新占位法律/政策文本。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

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

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.

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.

README 原文

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

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.

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.

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.

README 原文

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

README 原文

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

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

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-17。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 85 / 100
技术栈
Vite · React
网站类型
电商
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-10-17
截图检查日期
2026-10-17

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Vite。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: codex-user-requested-batch-review-20261018 · 2026-10-18

查看当时使用的来源资料

SHA-256: 1a24a3cb3ce944b4b438d653e09e27afe77e98b502ab4e629d9bd93e6a2f416f

2026-10-17T01:26:26.563Z

来源文件 / 仓库
# 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
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。