A starter e-commerce storefront with catalog, cart, checkout, order management and an admin panel.
Find a file
2026-10-06 11:40:38 +00:00
.codegraph feat: implement La Rose storefront design (home, catalog, PDP) 2026-10-05 16:33:55 +00:00
.w4c docs: apply Q1–Q6 decisions (BYN, 93 products, URLs 1:1, FAQ page, no Bitrix24 chat) 2026-10-04 17:53:56 +00:00
assets/la-rose feat: catalog 3×3 grid / 12-row list + Instagram & VK links 2026-10-05 18:06:42 +00:00
db feat: embed Yandex map in the contacts "Как добраться" section 2026-10-05 18:51:52 +00:00
designs feat: catalog 3×3 grid / 12-row list + Instagram & VK links 2026-10-05 18:06:42 +00:00
docs docs: record product gallery results and open smoke test (#64) 2026-10-05 15:44:39 +00:00
public fix: drop phantom full-screen gap before the footer on info pages 2026-10-06 11:40:38 +00:00
scripts fix: serve product images from the W4C asset share base 2026-10-05 23:01:11 +00:00
src fix: add mandatory /raw/ segment to ASSETS_BASE_URL share path 2026-10-05 23:11:40 +00:00
.editorconfig Initial commit 2026-10-01 10:39:03 +00:00
.env.example feat(db): schema, migrations and idempotent seed for the catalog 2026-10-04 19:57:52 +00:00
.gitignore Initial commit 2026-10-01 10:39:03 +00:00
index.html feat: catalog 3×3 grid / 12-row list + Instagram & VK links 2026-10-05 18:06:42 +00:00
package.json feat: real /favicon.ico and an un-stretched brand lockup 2026-10-05 17:53:49 +00:00
pnpm-lock.yaml feat(db): schema, migrations and idempotent seed for the catalog 2026-10-04 19:57:52 +00:00
pnpm-workspace.yaml feat: implement La Rose storefront design (home, catalog, PDP) 2026-10-05 16:33:55 +00:00
README.md feat(db): schema, migrations and idempotent seed for the catalog 2026-10-04 19:57:52 +00:00
SPEC.md Initial commit 2026-10-01 10:39:03 +00:00
tsconfig.json feat(db): schema, migrations and idempotent seed for the catalog 2026-10-04 19:57:52 +00:00

Online Shop — W4C project template

A W4C project template. Creating a project from it generates a private copy of this repository in your namespace and starts the Startup Creator agent, which drives the build from this brief.

This repository is deliberately a brief, not a finished app: it ships the product specification, the project metadata and the seed assets; the tech stack chosen in the creation dialog decides the scaffold. Read SPEC.md for the full product contract — roles, routes, data model, flows, functional and non-functional requirements, and the acceptance criteria the work is checked against.

What ships in this repository

Path Purpose
README.md This file: how the template is wired and how to work in the project.
SPEC.md The product specification and acceptance criteria — the contract to build.
.gitignore Default ignores for dependencies, build output, local secrets and editor/OS cruft.
.editorconfig Shared editor defaults (UTF-8, LF, indentation) for the generated project.
.w4c/template.json Template manifest: dialog fields, starter prompt, element list (templates only).
.w4c/project.json Project metadata committed with the repository.
.w4c/diagrams/ Excalidraw architecture diagram.
.w4c/boards/roadmap.json Board columns and the seed tasks for the build.
.w4c/workflows/ The CI workflow to import into the workflows module.
db/migrations/ Idempotent SQL schema (16 tables, relations, indexes) — docs/PLAN.md §4.
db/seed/catalog.tsv The 93-product catalog from docs/CATALOG.md §3 (broken #59 excluded, R14).
src/db/ Data-layer code: migrations, idempotent seed, catalog parsing, DB client.
src/store/ Store constants (STORE_CURRENCY = 'BYN', contacts) and money helpers.
scripts/ CLI entry points: migrate, seed, verify, placeholder dev server.

See .w4c/README.md for the full .w4c/ contract.

Stack

The creation dialog records the chosen stack (and its skill pair stack-* + stack-*-quality). Scaffold with those skills and hold the work to their conventions and quality gates. The stack is not fixed here on purpose: the same brief is built on Vue 3 + Quasar, Next.js, Laravel, Phoenix, … without changing SPEC.md.

Data layer

The schema and seed for the catalog live in this repository:

pnpm install
cp .env.example .env      # point DATABASE_URL at your Postgres database
pnpm migrate              # create/upgrade the schema (idempotent)
pnpm seed                 # load 14 categories + 93 products (idempotent)
pnpm db:verify            # run migrate + seed on a throwaway Postgres and assert the counts

pnpm seed converges the database to 14 categories (11 visible + 3 hidden, R13) and 93 products from docs/CATALOG.md §3 (the broken /product/1997/ is excluded, R14). All money is stored as integer BYN minor units (price_minor, price_minor = BYN × 100) — never a float (R2/R4); the currency comes from the single constant STORE_CURRENCY = 'BYN' in src/store/constants.ts. There is no interim currency and no FX conversion.

pnpm db:verify needs no database: it runs the exact same migrations and seed against an in-process Postgres (PGlite) and fails unless product = 93, category = 14 and visible categories = 11.

Build order

Work top-down, one layer at a time, and verify each layer before starting the next:

  1. Scaffold the stack and get the empty shell running (install → dev server → commit).
  2. Product & scope — routes and the data model from SPEC.md §3–§4.
  3. Catalog & product read paths from seeded data.
  4. Cart, checkout and payment (mock provider first).
  5. Accounts and order history.
  6. Admin area.
  7. Quality — tests, CI, README quickstart, .env.example, accessibility.

The full rationale and the acceptance criteria live in SPEC.md §8–§9.

Working rules

  • One concern per commit, conventional messages (feat:, fix:, chore:, docs:, test:).
  • Money is integer minor units (priceMinor), never floating point; format with the project currency and en-US number formatting.
  • Authorize every mutation on the server; never only in the UI.
  • Never commit secrets — document them in .env.example instead.
  • Keep docs/PLAN.md, the board and .w4c/project.json in sync as the project evolves.