A bold, brutalist e-commerce storefront built with Jay Framework and Wix Stores. Features an asymmetric product grid, product detail pages with variants, and a shopping cart — all in a high-contrast black/white/cyan design.
Live demo: https://jay-studio-9b80199d-yoav68.wix-site-host.com
![]() ![]()
|
|
- Node.js >= 20
- A Wix site with Wix Stores installed
npm install
npm create @wix/new@latest init
npm run setupHere's what each command does:
-
npm create @wix/new@latest init— Creates a new headless Wix site, generating awix.config.jsonwith:siteId— the Wix site identifier (also known as metasite ID in Wix)appId— a client ID for headless API access
This command is only required for Wix-hosted sites.
-
npm run setup— Createsconfig/.wix.yaml. If a validwix.config.jsonexists, it reads thesiteIdandclientIdfrom it.Note:
appId(inwix.config.json) andclientId(inconfig/.wix.yaml) are the same value. Both can also be generated manually from Wix Dashboard → Site Settings → Headless Settings → Headless Client. -
Generate an API key — Go to Wix Dashboard → Account Settings → API Keys, create a new key, and paste it into
config/.wix.yamlunderapiKeyStrategy.apiKey. -
Install Wix Stores — In the Wix Business Manager → Apps → Manage Apps → App Market, find Wix Stores and add it to the site.
-
Create the
jay-backend-filescollection — In the Wix Business Manager of the same site (or the site referenced inconfig/.wix.yaml, if those are different), go to CMS and create a new collection namedjay-backend-files. No specific schema is required. This collection stores pre-compiled page data for Wix BaaS deployment. -
Run
npm run setupagain to validate that all credentials are configured correctly.
When everything is set up, the output should look like:
📦 wix-server-client
✅ Services verified
Wix client connected (site: 04cf42a4...)
📦 wix-deploy
✅ Services verified
Deploy target: wix.config.json (appId: 574c2287...). Collection: jay-backend-files ✓
📦 wix-stores
✅ Services verified
Wix Stores configured (product URL: /products/{slug})
Setup complete: 3 configured
| File | Purpose |
|---|---|
wix.config.json |
Used for Wix BaaS deployment — only needed on the server where the application is deployed. Required only for Wix-hosted sites. |
config/.wix.yaml |
Used to connect to Wix backend services (Wix Data, Wix Stores, etc.) at build time and runtime. |
Having two separate files allows deploying multiple versions of the business as different BaaS instances. By default, both point to the same site.
npm run agent-kitGenerates an agent-kit/ directory with documentation and reference material for the AI agent. The kit is organized by role:
agent-kit/
├── plugins-index.yaml # Index of all installed plugins, their contracts, actions, services, and contexts
├── designer/ # Jay-HTML syntax, styling, components, and routing for visual design
├── developer/ # Page contracts, component data/state/refs, CLI commands, and configuration
├── devops/ # Production builds, serving modes, fetch handler, and cache invalidation
├── plugin/ # Plugin structure, actions, commands, services, webhooks, and validation
├── materialized-contracts/
│ └── wix-stores/
│ └── product-page.jay-contract # Fully resolved product page contract with all fields
└── references/
└── wix-stores/
└── categories.yaml # Store categories reference data
Each role directory includes an INSTRUCTIONS.md entry point for the AI agent.
npm run devThe dev server starts at http://localhost:3000 with hot reload. If port 3000 is taken, it will pick another port and print the URL in the output.
The project includes the Jay AI designer for editing pages visually with AI assistance.
npm run devThen open http://localhost:3000/aiditor in your browser.
- Navigate between pages using the site itself within the preview, or using the top routes selector dropdown.
- Annotate visually using the point, area, or arrow tools to give visual instructions to the agent. You can also paste images into the annotation instructions.
- Use the bottom Agent Output panel to see progress and give textual instructions via Claude Code.
This project includes the wix-deploy package for deploying to Wix BaaS. If you don't need Wix deployment, remove wix-deploy from your dependencies.
npm run build:production
npm run deployThis bundles a ~2.5 MB entry.mjs, uploads page data to the jay-backend-files collection, and deploys the server + frontend to Wix BaaS + CDN.
# Build
npm run build:production
# Serve with the built-in production server
npm run serveOr use the fetch handler directly in any Node.js server:
import { createJayFetchHandler } from '@jay-framework/jay-fetch-handler';
const handler = createJayFetchHandler({
backendDir: './build/v0.18.0/backend',
staticBaseUrl: '/',
frontendDir: './build/v0.18.0/frontend',
});
// Use with any HTTP server frameworksrc/
├── pages/
│ ├── page.jay-html # Homepage
│ ├── products/
│ │ ├── page.jay-html # Product listing (brutalist grid)
│ │ └── [slug]/page.jay-html # Product detail (dynamic)
│ └── cart/
│ └── page.jay-html # Shopping cart
└── styles/
└── brutalist-theme.css # Brutalist theme (Space Grotesk, cyan accent)
Pages use .jay-html templates with headless component bindings — no JavaScript needed for data fetching, SSR, or client hydration. The framework handles all of that through contracts and plugins.




