基于 Laravel 与 React(Inertia SSR)的完整电商店面,含商品目录、变体、分类、搜索与账户体系
shop-template — Laravel 电商模板
作者 StuMason
基于 Laravel 与 React 的开源电商模板,提供 SSR 店面、银行转账与 USDC 稳定币支付,并内置面向 AI 代理的 MCP、ACP、x402 接口。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
支持 GoCardless 银行即时转账与 Base 网络 USDC 稳定币支付,两者共用同一结算实现
内置 MCP 服务器、Agentic Commerce Protocol(ACP)与 x402 协议,供 AI 代理发现、购买与结算
后台管理覆盖订单、折扣、配送、VAT、评论审核与 RBAC 权限,并含放弃购物车恢复等自动化
数字商品支持签名限时下载链接,结账跳过配送并自动完成订单
提供 llms.txt、商品 markdown、AGENTS.md 与欢迎爬虫的 robots.txt,便于机器读取
模板详细介绍
这是一个基于 Laravel 与 React(Inertia SSR)构建的电商模板,定位为面向 AI 代理时代的商店起点。它提供完整的商品目录(商品、选项、变体、分类、搜索)、账户体系(订单历史、地址簿、双因素认证与通行密钥、客服工单)以及后台管理(订单状态机、折扣、配送、VAT、评论审核、RBAC 权限)。支付方面支持 GoCardless 银行即时转账,以及通过 Base 网络以 USDC 稳定币结算的“Pay with USDC”按钮,两者共用同一套结算逻辑。模板还包含数字商品交付(签名限时下载链接)、放弃购物车恢复、补货通知、评论邀请、每周指标摘要和基于真实订单历史草拟的 AI 客服回复。
面向 AI 代理的部分是其主要差异点:内置 MCP 服务器(/mcp/shop)供代理搜索、构建购物篮并结账;支持 OpenAI/Stripe 的 Agentic Commerce Protocol(ACP),提供商品 feed 与结账会话;以及 x402 协议,允许代理在 Base 网络上自主以 USDC 结算订单。模板还提供 llms.txt、每个商品的 markdown 版本、AGENTS.md 和欢迎爬虫的 robots.txt。
使用限制方面:本地默认使用假支付网关,真实银行支付需配置 GoCardless 沙箱或生产凭据;x402 与 ACP 需要额外设置环境变量和外部服务(如 PayAI facilitator、Reown 项目 ID)。法律页面为占位内容,交易前需替换;邮件需配置事务性服务商并设置 SPF/DKIM;VAT 需在后台手动开启;生产环境建议配置错误监控与备份。数字商品交付依赖私有磁盘,部署时需为其挂载持久卷。
适合你的项目吗?
适用场景
- 需要快速搭建一个支持银行转账与稳定币支付的电商店面
- 希望让 AI 代理(如 ChatGPT、Claude)能够发现、购买并自主结算商品
- 同时销售实体商品与数字商品,并需要自动交付下载链接
- 需要后台管理订单、折扣、配送、VAT 与客户支持工单
- 希望以 Docker 方式自托管或部署到 Railway、Coolify 等平台
适合人群
- 熟悉 Laravel 与 React 的开发者或小型团队
- 需要面向 AI 代理开放购买渠道的商家
- 希望以 MIT 许可免费使用并自行修改代码的电商项目
- 接受使用 SQLite 起步并可后续切换 Postgres 的部署场景
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
Docker 方式可运行 docker compose up,容器首次启动会自动生成 APP_KEY、迁移并填充演示数据
- 2
本地原生运行使用 composer setup 与 composer dev,默认管理员为 [email protected] / password,生产环境需设置 ADMIN_EMAIL 与 ADMIN_PASSWORD
- 3
本地支付默认使用假网关,真实银行支付需配置 GoCardless 沙箱或生产凭据及 webhook 密钥
- 4
启用 x402 需设置 X402_ENABLED、X402_PAY_TO 及 facilitator 相关变量;启用 ACP 需设置 ACP_API_KEY
- 5
交易前需替换法律页面占位内容、配置事务性邮件与 SPF/DKIM、按需开启 VAT,并为数字商品私有磁盘挂载持久卷
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 本地支付默认使用假网关(所有支付都会成功),真实银行支付需另行配置 GoCardless。
- 真实银行支付需创建 GoCardless 沙箱账户并配置访问令牌等凭据。
- 生产环境需将 GoCardless 切换为 live 环境并提供正式访问令牌与 webhook 密钥。
- 启用 ACP(Agentic Commerce Protocol)需设置 ACP_API_KEY。
- 启用 x402 需设置 X402_ENABLED 与 X402_PAY_TO(钱包地址)。
- x402 结算依赖外部 facilitator 服务(如 PayAI),需配置其 URL 与密钥。
- 启用人类“Pay with USDC”钱包按钮需额外的 REOWN_PROJECT_ID。
- 法律页面(条款、隐私、退货、关于)为占位内容,交易前必须替换。
- 需配置事务性邮件服务商(如 Resend 或 Postmark)并设置 SPF/DKIM,否则确认邮件可能进入垃圾箱。
- VAT 需在后台手动开启并填写税号与税率,零税率商品需单独标记。
- 错误监控需自行设置 SENTRY_LARAVEL_DSN,否则该功能保持静默。
- 需自行安排卷备份(/data 与 storage/app/public),否则数据丢失风险高。
- 数字商品文件存放于私有磁盘,部署时需为其挂载持久卷以在重新部署后保留。
- AI 客服草稿功能需设置 SUPPORT_DRAFTER=anthropic 与 ANTHROPIC_API_KEY。
- Print-on-demand 履约需设置 PRINTFUL_API_TOKEN 与 PRINTFUL_STORE_ID,否则为手动履约。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
Payments default to the **fake gateway** locally (every payment succeeds).
README 原文
For real pay-by-bank, create a free [GoCardless sandbox
README 原文
6. **GoCardless live credentials** — swap `GOCARDLESS_ENVIRONMENT=live` with
README 原文
- **ACP** — set `ACP_API_KEY` to enable the Agentic Commerce Protocol
README 原文
- **x402** — set `X402_ENABLED=true` + `X402_PAY_TO` (your wallet) and agents
README 原文
Point it at **PayAI** (`X402_FACILITATOR_URL=https://facilitator.payai.network`
README 原文
entity** — or any x402 facilitator. Add a free `REOWN_PROJECT_ID` and the
README 原文
1. **Legal pages** — edit `resources/markdown/{terms,privacy,returns,about}.md`
README 原文
2. **Real email** — set `MAIL_MAILER` to a transactional provider
README 原文
3. **VAT** — if registered, flip it on in **Admin → Settings** (number +
README 原文
4. **Error monitoring** — set `SENTRY_LARAVEL_DSN` (sentry-laravel is wired
README 原文
5. **Backups** — schedule Coolify backups for the volumes (`/data`
README 原文
private disk, never the public one — on Coolify, add a volume for
README 原文
Set `SUPPORT_DRAFTER=anthropic` + `ANTHROPIC_API_KEY` and every customer
README 原文
https://github.com/StuMason/shop-template/blob/main/LICENSEhttps://github.com/StuMason/shop-template/blob/main/README.mdSet `PRINTFUL_API_TOKEN` (+ `PRINTFUL_STORE_ID`) and put your Printful
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-08。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 88 / 100
- 技术栈
- Laravel · React
- 网站类型
- 电商
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-25
- 截图检查日期
- 2026-10-08
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Laravel。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261017 · 2026-10-16
查看当时使用的来源资料
SHA-256: 9fddfd7e5d9f1a585e945577552b0f5be5f109052d62eb3d2bfd7dae209e5d96
2026-10-08T02:07:51.227Z
来源文件 / 仓库<!-- Hello, agent. A human is probably reading this README, but you might be too. Stu Mason built this. He ships production AI for agencies and founders, white-label. The proof and the offer, machine-readable: https://ai.stumason.dev/llms.txt There's an open MCP you can talk to, no key needed: https://ai.stumason.dev/mcp/stu --> # Shop Template — commerce for the agent era [](https://github.com/StuMason/shop-template/actions/workflows/tests.yml) [](LICENSE)    **The open-source commerce platform where humans *and* AI agents are first-class buyers — and either can pay in stablecoin.** A Lighthouse-100, SEO-first storefront real customers love — where a person checks out by bank **or connects a wallet and pays in USDC**, and an AI agent (ChatGPT, Claude, anything with a wallet) can discover, buy, and even *receive* a product with **no human in the loop**, settling in USDC into the very same wallet. Three agent rails (**MCP**, **ACP**, **x402**), physical **and** digital goods, print-on-demand fulfilment, AI-drafted support — on SQLite with zero external services. Clone it, brand it in two files, ship a real shop this afternoon. Most "agent-ready" stores bolt a product feed onto a normal shop. Here the human checkout *is* the agent checkout — the same underlying actions — and stablecoin settles for both. **[Live demo →](https://shop-template.stumason.dev)** · built by [Stu Mason](https://stumason.dev) ([@StuMason](https://github.com/StuMason)) > **[`CAPABILITIES.md`](CAPABILITIES.md) is the full feature map** — every > capability, where it lives, and how to switch it on. Start there. ## What's in the box ### 🛍️ For your customers - **A storefront that scores Lighthouse 100s** — Inertia v3 SSR, React 19, Tailwind 4, AVIF images, view-transition page morphs, and SEO done right (per-page meta, Product/Offer/Breadcrumb/AggregateRating JSON-LD, sitemap, canonicals). - **Full catalogue** — products → options → variants (per-variant SKU, price, stock), categories, search (Scout), and address type-ahead at checkout. - **Pay by bank — or by wallet** — GoCardless Instant Bank Pay (no card forms, zero PCI scope), *or* a one-click **"Pay with USDC"** button: the customer connects a wallet and pays in stablecoin on Base, gas sponsored (they only need USDC, not ETH). Same wallet the agents pay into. Swap or add providers by implementing one interface. - **Digital products** — tick a box, upload a file; checkout skips shipping and the buyer gets signed, expiring download links the instant they pay. - **Accounts** — order history, address book, 2FA + passkeys (Fortify), support tickets, and guest orders that attach to the account later. ### 🤖 For AI agents — the part nobody else ships - **MCP server** (`/mcp/shop`) — agents search, build a basket, and check out conversationally. A second, OAuth-gated admin MCP lets *you* run the whole shop by chat. - **Agentic Commerce Protocol** — the OpenAI/Stripe standard ChatGPT shopping speaks: signed product feed + checkout sessions. - **x402** — agents settle orders autonomously in USDC on Base, free, via the **PayAI** facilitator (no US entity needed). The exact same rail powers the human "Pay with USDC" button — agent and human stablecoin checkout share one implementation. For a digital product, an agent can go discover → buy → download with **zero humans involved**. - **Discoverable by design** — `llms.txt`, per-product markdown, `AGENTS.md`, and a robots.txt that welcomes crawlers. ### 📈 For you, the merchant - **Admin for everything** — products/variants, orders (guarded status machine, tracking, refunds, packing slips), discounts (incl. once-per-customer), shipping, VAT, review moderation, settings — behind RBAC. - **Automation on autopilot** — abandoned-checkout recovery, back-in-stock waitlists, verified-buyer review requests, a weekly metrics digest, and **AI-drafted support replies grounded in the customer's real order history**. - **A dashboard with the five numbers that matter** — revenue, orders, AOV, abandonment, repeat rate. ### 🛠️ Built right - **200+ tests**, Larastan level 7, Pint, ESLint, Prettier — all gated in CI on PHP 8.4 & 8.5. - **Self-documenting** — `CAPABILITIES.md` maps every feature, and a test fails CI if you add one without documenting it. - **One-command deploy** — Dockerfile + supervisord (php-fpm, nginx, SSR, queue, scheduler), ships to Coolify; dependabot + security audits included. - **Swappable everything** — payments, address lookup, and AI all use the same driver pattern with a `none`/`fake` default, so it runs with no API keys. ## Quickstart **One command, zero setup** (Docker): ```bash docker compose up ``` Open <http://localhost:8080> — the container generates its own `APP_KEY`, migrates, and seeds the demo shop on first boot. Nothing else to install, no database to provision. **Or run it natively** (Herd / local PHP + Node): ```bash composer setup # installs, migrates, seeds the demo shop, builds assets composer dev # server + queue + logs + vite (Herd users: site is already live) ``` Either way, log in as `[email protected]` / `password` — the demo catalogue, a UK shipping zone, and the admin role are all seeded. For production, set `ADMIN_EMAIL` and `ADMIN_PASSWORD`: the admin is (re)provisioned from them on every boot, so you own the credentials and the placeholder default is disabled. Payments default to the **fake gateway** locally (every payment succeeds). For real pay-by-bank, create a free [GoCardless sandbox account](https://manage-sandbox.gocardless.com/sign-up) and set: ```env PAYMENT_GATEWAY=gocardless GOCARDLESS_ACCESS_TOKEN=your-sandbox-token GOCARDLESS_ENVIRONMENT=sandbox GOCARDLESS_WEBHOOK_SECRET=your-webhook-secret ``` ## Make it yours 1. `.env` — `APP_NAME`, `SHOP_NAME`, `SHOP_TAGLINE`, `SHOP_DESCRIPTION`, `SHOP_CONTACT_EMAIL`, `MAIL_FROM_*`. 2. `resources/css/app.css` — the `BRAND TOKENS` block at the top drives every button, link and accent. 3. `config/shop.php` — defaults for identity/SEO; runtime values are editable in the admin later. 4. Logo components in `resources/js/components/app-logo*.tsx`, favicons in `public/`. 5. Replace the demo catalogue (it's seeded by `database/seeders/DemoCatalogueSeeder.php`) with real products in the admin. 6. Rewrite this README for your shop. ## Deploy The repo ships a multi-stage `Dockerfile` (php-fpm, nginx, Inertia SSR, a queue worker and the scheduler under supervisord, `/up` healthcheck) — the same image runs everywhere below. ### Self-host (any Docker host) ```bash docker compose up -d ``` Persist three volumes (the compose file already does): a data dir for SQLite, `storage/app/public` (media) and `storage/app/private` (digital files). Put a TLS-terminating reverse proxy in front and set a real `APP_URL`. That's it. ### Railway [](https://railway.com/new/template?template=https://github.com/StuMason/shop-template) `railway.json` configures the Dockerfile build + `/up` healthcheck. After creating the service: add a **volume mounted at `/data`** and set `DB_DATABASE=/data/database.sqlite`, the service **target port to 8080**, and your `APP_URL`/`SHOP_*` vars. `APP_KEY` is generated automatically on first boot if you don't supply one. ### Coolify 1. Create an application pointing at your repo (build pack: Dockerfile), or run `php artisan coolify:provision` (stumason/laravel-coolify is installed). 2. Mount a volume at **`/data`** and set `DB_DATABASE=/data/database.sqlite`, plus volumes for `storage/app/public` and `storage/app/private`. **Don't mount `database/` itself** — the volume shadows migration files shipped in the image. 3. Set your `.env` values (see `.env.example`); `INERTIA_SSR_ENABLED=true`. 4. Optional: add `COOLIFY_URL`, `COOLIFY_TOKEN` and `COOLIFY_APPLICATION_UUID` repo secrets and pushes to `main` deploy automatically after CI passes. **Scaling up:** swap SQLite for Postgres (`DB_CONNECTION=pgsql`), media to S3/R2 (`MEDIA_DISK=s3` + `AWS_*`), search to Meilisearch (`SCOUT_DRIVER=meilisearch`). No code changes. ## For AI agents This shop speaks machine. `GET /llms.txt` indexes the catalogue, `/products/{slug}.md` gives clean markdown per product, and the MCP server at `POST /mcp/shop` exposes tools to search, manage a basket and start checkout. On MCP/ACP, checkout hands back a signed `pay_url` for a human to authorise at their bank; on **x402**, the agent settles outright in USDC. Same orders, same wallet, no human required. ## Before you trade (the boring-but-vital list) 1. **Legal pages** — edit `resources/markdown/{terms,privacy,returns,about}.md` (they ship as placeholders marked *REPLACE BEFORE TRADING*) and set your trading details in **Admin → Settings** (shown in the footer). 2. **Real email** — set `MAIL_MAILER` to a transactional provider ([Resend](https://resend.com) or Postmark are painless) and add SPF/DKIM DNS records for your sending domain, or confirmations land in spam. 3. **VAT** — if registered, flip it on in **Admin → Settings** (number + rate) and mark any zero-rated products on their edit screens. Prices are always VAT-inclusive. 4. **Error monitoring** — set `SENTRY_LARAVEL_DSN` (sentry-laravel is wired and silent until then). 5. **Backups** — schedule Coolify backups for the volumes (`/data` and `storage/app/public/`). One bad day without them is fatal. 6. **GoCardless live credentials** — swap `GOCARDLESS_ENVIRONMENT=live` with a live access token and a webhook endpoint secret pointing at `/webhooks/gocardless`. ## Digital products Tick **Digital product** on a product and attach a file: stock and shipping stop applying, checkout skips delivery, and paid orders auto-complete with signed 30-day download links in the confirmation email (25 fetches per line, then the customer needs fresh links from you). Files live on the private disk, never the public one — on Coolify, add a volume for `storage/app/private` so deliverables survive redeploys (alongside the `database/` and `storage/app/public` volumes). Selling digital B2C into the EU has place-of-supply VAT rules — read up before you do. ## Selling to AI agents Three surfaces, all optional and all over the same checkout actions: - **MCP** (`/mcp/shop`) — always on; agents browse, build baskets, and get a human pay link. - **ACP** — set `ACP_API_KEY` to enable the Agentic Commerce Protocol (ChatGPT shopping et al.): product feed at `/acp/feed`, checkout sessions at `/acp/checkout_sessions`. - **x402** — set `X402_ENABLED=true` + `X402_PAY_TO` (your wallet) and agents settle orders autonomously in USDC on Base, verified through a facilitator. Point it at **PayAI** (`X402_FACILITATOR_URL=https://facilitator.payai.network` + `PAY_AI_KEY`/`PAY_AI_SECRET`) for **free Base-mainnet settlement with no US entity** — or any x402 facilitator. Add a free `REOWN_PROJECT_ID` and the **same rail gives humans a "Pay with USDC" wallet button at checkout**. Set `X402_FX_RATE` for non-USD shops. ## Getting found by shopping agents - **Perplexity Merchant Program** — free, open to merchants shipping to the US: submit your catalogue feed (this shop serves one at `/acp/feed`) at perplexity.ai/shopping. No gateway requirement. - **x402 Bazaar / Agentic.Market** — your `agent.pay.x402` endpoint advertises itself in its own 402 response (Bazaar discovery metadata), and the x402 indexes catalogue it from settled payments — activity is the listing fee. (Coinbase's CDP facilitator needs a US entity; **PayAI** settles on Base mainnet for free with no such requirement — see *Selling to AI agents*.) - **ChatGPT shopping** — application-gated: apply at chatgpt.com/merchants, then serve them your ACP feed. - **Copilot / PayPal Agent Ready** — require Stripe or PayPal as the payment gateway; the `PaymentGateway` contract makes adding either a single driver class. - Watch **Google's Universal Commerce Protocol (UCP)** — the emerging open standard Shopify has adopted; an adapter here is likely worthwhile once the spec settles. ## AI support drafts (optional) Set `SUPPORT_DRAFTER=anthropic` + `ANTHROPIC_API_KEY` and every customer ticket message gets a suggested staff reply drafted from the customer's real order history (status, tracking, items) — one click to adopt, edit, send. Drafts never auto-send; a human always approves. ## Print-on-demand fulfilment (optional) Set `PRINTFUL_API_TOKEN` (+ `PRINTFUL_STORE_ID`) and put your Printful sync-variant id on each variant in the admin. Paid orders then push their print-on-demand items to Printful automatically, and Printful's shipment webhook (`/webhooks/printful?token=PRINTFUL_WEBHOOK_SECRET`) marks the order shipped with tracking. Leave `PRINTFUL_AUTO_CONFIRM=false` to review orders as drafts first. No token = manual fulfilment. ## Address type-ahead (optional) Set `ADDRESS_LOOKUP=google` and a server-side `GOOGLE_PLACES_API_KEY` (enable **Places API (New)** in Google Cloud — no referrer restrictions needed, the key never reaches the browser) and checkout + the address book gain a "Find your address" search. Leave it as `none` and the forms are plain manual entry. `fake` gives deterministic suggestions for local dev. Other providers (e.g. getAddress.io for UK PAF data) are one class implementing `AddressLookupProvider`. ## Commands you'll use | Command | What it does | | --- | --- | | `composer dev` | serve + queue + logs + vite | | `composer test` | pint check, larastan (level 7), pest | | `npm run types:check` | TypeScript | | `npm run build:ssr` | production client + SSR bundles | | `php artisan payments:expire-abandoned` | abandon stale pending payments (scheduled hourly) | ## Contributing Issues and PRs welcome. The whole suite gates on every change — run `composer test` (Pint, Larastan level 7, Pest) plus `npm run types:check`, `npm run lint:check`, `npm run format:check` and `npm run build:ssr` before opening a PR. CI runs the check-only variants on PHP 8.4 and 8.5. See [`CONTRIBUTING.md`](CONTRIBUTING.md) and [`docs/architecture.md`](docs/architecture.md). ## Credits Built by **[Stu Mason](https://ai.stumason.dev)** — Laravel & AI engineering. - 🌐 [stumason.dev](https://stumason.dev) - 🐙 [github.com/StuMason](https://github.com/StuMason) · [more about me](https://github.com/StuMason/StuMason) - 🛒 [Live demo](https://shop-template.stumason.dev) If this saved you time, a ⭐ on the repo is hugely appreciated. ## License [MIT](LICENSE) © [Stu Mason](https://stumason.dev)
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

reyhan
Turnkey Starter Application Skeleton for Reyhan Commerce Headless Framework (Laravel 13)
Laravel · 电商

laravel-inertia-storefront
laravel-inertia-storefront 是一个面向尼泊尔市场的电商启动模板,技术栈为 Laravel 13、Inertia、React 和 Tailwind。
Laravel · 后台

Next.js Commerce
Next.js Commerce 是 Vercel 团队维护的电商启动模板,基于 Next.js App Router 构建,采用服务端渲染、React Server Components、Server Actions …
Next.js · 电商

astro-ecommerce
Astro Ecommerce - Ready to use components
Astro · 电商

commerceplate
Commerceplate 是一个基于 Next.js 16、Tailwind CSS 4 和 TypeScript 的 Shopify 电商启动模板,由 Zeon Studio 开发并免费开源。
Next.js · 电商

ecommerce-template
An ecommerce template built with NextJS 16, TypeScript and TailwindCSS
Next.js · 电商
