Skip to content
codexa

Ecommerce · React

Wooden toy shop

Bright wooden toy store with toys by age, the workshop team, safe materials, delivery FAQ and a newsletter.

Wooden toy shop starter, as built from its own files
Starter screenshot captured from this template's own build at 1440×900. It shows the template as it ships, not output generated from a prompt.

What you get

A storefront for a family toy workshop: a centred hero, wooden toys sorted by age and play type, how they are made, the makers, parent quotes, a delivery and returns FAQ, and a newsletter. All content lives in src/site.ts.

Files

Exactly what is copied into a new project: 13 files, nothing generated.

Raw data: GET /api/v1/templates/shop-wooden-toys

src/site.ts
src/site.ts
import type { Site } from "./types"; /** Everything this site shows. Edit freely. */export const site: Site = {  "brand": "Little Grove Toys",  "nav": [    {      "label": "Toys",      "href": "#toys"    },    {      "label": "How they're made",      "href": "#made"    },    {      "label": "Makers",      "href": "#makers"    },    {      "label": "Shipping",      "href": "#shipping"    }  ],  "navCta": {    "label": "Shop toys",    "href": "#toys"  },  "sections": [    {      "kind": "hero",      "variant": "center",      "eyebrow": "Wooden toys made in Freiburg",      "title": "Toys sturdy enough for the next child too.",      "text": "Rattles, stacking toys and play kitchens cut from Black Forest beech and finished with water-based paint. Made by three people in a small workshop.",      "primary": {        "label": "Shop by age",        "href": "#toys"      },      "secondary": {        "label": "How they're made",        "href": "#made"      },      "visual": {        "type": "tiles",        "tones": [          "#b45309",          "#efe3cc",          "#4d7c0f",          "#7c2d12"        ],        "caption": "Stacking Arches · 7 pieces"      }    },    {      "kind": "products",      "id": "toys",      "eyebrow": "Shop",      "title": "Toys by age and play",      "text": "Age guidance is printed on every box.",      "currency": "€",      "items": [        {          "name": "Beech Rattle",          "price": 18,          "category": "Baby",          "tone": "#a16207",          "text": "Smooth-turned rattle, from birth."        },        {          "name": "Teether Ring",          "price": 12,          "category": "Baby",          "tone": "#854d0e",          "text": "Untreated beech, sized for small hands."        },        {          "name": "Stacking Arches",          "price": 39,          "category": "Toddler",          "tone": "#b45309",          "text": "Seven painted arches, from 12 months.",          "badge": "Bestseller"        },        {          "name": "Push-along Duck",          "price": 34,          "category": "Toddler",          "tone": "#9a3412",          "text": "Wobbles and clacks as it rolls.",          "badge": "New"        },        {          "name": "Shape Sorter Box",          "price": 36,          "category": "Toddler",          "tone": "#4d7c0f",          "text": "Six shapes, lift-off lid."        },        {          "name": "Play Kitchen",          "price": 210,          "category": "Pretend play",          "tone": "#78350f",          "text": "Hob, oven door and sink, 85 cm tall.",          "badge": "Low stock"        },        {          "name": "Market Stall",          "price": 165,          "category": "Pretend play",          "tone": "#6b4f3a",          "text": "With awning, chalkboard and crates."        },        {          "name": "Tool Bench",          "price": 78,          "category": "Pretend play",          "tone": "#57534e",          "text": "Wooden hammer, nuts, bolts and a saw."        },        {          "name": "Farm Animal Puzzle",          "price": 24,          "category": "Puzzles & games",          "tone": "#365314",          "text": "12 chunky pieces, from 2 years."        },        {          "name": "Marble Run Starter",          "price": 89,          "category": "Puzzles & games",          "tone": "#7c2d12",          "text": "34 blocks, builds 6 different runs.",          "badge": "New"        },        {          "name": "Wooden Dominoes",          "price": 22,          "category": "Puzzles & games",          "tone": "#44403c",          "text": "28 tiles in a sliding-lid box."        }      ]    },    {      "kind": "features",      "id": "made",      "eyebrow": "How they're made",      "title": "Simple materials, careful finishing",      "columns": 4,      "items": [        {          "title": "Regional beech",          "text": "Timber from Black Forest sawmills within 60 km of the workshop.",          "icon": "leaf"        },        {          "title": "Water-based paint",          "text": "Colours are sealed with a saliva-resistant, water-based finish.",          "icon": "check"        },        {          "title": "Checked by hand",          "text": "Every toy is sanded and checked for splinters and loose parts before packing.",          "icon": "shield"        },        {          "title": "Spare parts",          "text": "Lost a piece? We sell replacements for every set we make.",          "icon": "wrench"        }      ]    },    {      "kind": "team",      "id": "makers",      "eyebrow": "The makers",      "title": "Three people, one workshop",      "items": [        {          "name": "Jonas Keller",          "role": "Woodworker, designs every toy",          "tone": "#7c2d12"        },        {          "name": "Elif Sahin",          "role": "Painting and finishing",          "tone": "#4d7c0f"        },        {          "name": "Margot Dubois",          "role": "Orders, packing and your emails",          "tone": "#a16207"        }      ]    },    {      "kind": "quotes",      "eyebrow": "Parents",      "title": "Handed down, not thrown out",      "items": [        {          "quote": "The stacking arches survived our first child and are now being chewed by the second. Not a chip.",          "name": "Lena W.",          "role": "Parent of two"        },        {          "quote": "We lost a piece of the shape sorter under the sofa. A replacement arrived in two days for €2.",          "name": "Tobias R.",          "role": "Spare parts order"        },        {          "quote": "The play kitchen is the most used thing in our flat, including our own kitchen.",          "name": "Sofia & Ben",          "role": "Parents of a 3-year-old"        }      ]    },    {      "kind": "faq",      "id": "shipping",      "eyebrow": "Shipping & returns",      "title": "Delivery, returns and gifts",      "items": [        {          "q": "Where do you ship?",          "a": "Germany for €4.90, free over €60. Austria, Switzerland and the rest of the EU from €9.90."        },        {          "q": "How long does delivery take?",          "a": "In-stock toys ship within 2 working days. Play kitchens and market stalls are made in batches; the product page shows the date."        },        {          "q": "Can I return a toy?",          "a": "Unused toys can be returned within 30 days. We cover return postage if something arrives damaged."        },        {          "q": "Do you gift wrap?",          "a": "Yes, in brown paper with a cotton ribbon and a handwritten card, for €3."        }      ]    },    {      "kind": "cta",      "title": "New toys and workshop news",      "text": "A short email every couple of months when a new toy leaves the workshop, plus restock dates for the big pieces.",      "primary": {        "label": "Sign up",        "href": "#contact"      },      "secondary": {        "label": "Shop toys",        "href": "#toys"      }    },    {      "kind": "contact",      "eyebrow": "Newsletter",      "title": "Join the workshop letter",      "text": "Your email stays with us and you can unsubscribe in one click.",      "fields": [        "name",        "email"      ],      "button": "Subscribe"    }  ],  "footer": {    "text": "Wooden toys made in a small Freiburg workshop.",    "columns": [      {        "title": "Shop",        "links": [          "Baby",          "Toddler",          "Pretend play",          "Puzzles & games"        ]      },      {        "title": "Help",        "links": [          "Shipping",          "Returns",          "Spare parts",          "Gift wrapping"        ]      }    ],    "legal": "© Little Grove Toys. Sample content: replace it in src/site.ts."  }};

Remix

Remix this template

Describe what to change and the agent starts from Wooden toy shop's files. The box is already started for you: finish “Start from Wooden toy shop and …”

Agent ready

Creates a free account first; your idea is carried over.

Dependencies

Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.

  • react^19.1.0
  • react-dom^19.1.0
  • vite^6.3.0
  • @vitejs/plugin-react^4.4.0
  • tailwindcss^4.1.0
  • @tailwindcss/vite^4.1.0
  • typescript^5.8.0

How it runs

Framework
Vite + React + TypeScript
Dev command
npm run dev
Build command
npm run build
Output directory
dist
Port
5173
Entry route
/

Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.

All templates

Build on Wooden toy shop

Create a free account, start from this template, and ask the AI agent to turn it into your app.