Skip to content
codexa

Landing pages · React

Half-marathon registration

Dark race registration page for a city half-marathon with course facts, race-day schedule, entry prices and pack collection.

Half-marathon registration 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 registration page for a city road race: a centred hero with the date, race numbers, the course at a glance, the race-day schedule, entry tiers, race pack collection times, an FAQ and an entry form. 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/landing-half-marathon

src/site.ts
src/site.ts
import type { Site } from "./types"; /** Everything this site shows. Edit freely. */export const site: Site = {  "brand": "Northbridge Half",  "nav": [    {      "label": "Course",      "href": "#course"    },    {      "label": "Race day",      "href": "#raceday"    },    {      "label": "Entry",      "href": "#entry"    }  ],  "navCta": {    "label": "Enter now",    "href": "#register"  },  "sections": [    {      "kind": "hero",      "variant": "center",      "eyebrow": "Sunday 18 April 2027 · 8:00 am start · 12th edition",      "title": "13.1 flat, fast miles through the middle of Northbridge.",      "text": "A closed-road course past the old mills, along the river and back to Civic Square, with bands every two miles and the loudest finish straight in the north.",      "primary": {        "label": "Enter the race",        "href": "#entry"      },      "secondary": {        "label": "See the course",        "href": "#course"      },      "visual": {        "type": "none"      },      "note": "Entries close 1 March 2027, or sooner if all 6,000 places go."    },    {      "kind": "stats",      "items": [        {          "value": "21.1 km",          "label": "Closed roads"        },        {          "value": "6,000",          "label": "Places"        },        {          "value": "3h 30",          "label": "Course time limit"        },        {          "value": "48 m",          "label": "Total climb"        }      ]    },    {      "kind": "split",      "id": "course",      "eyebrow": "The course",      "title": "One loop, mostly flat, measured to the metre",      "text": "The course is certified and chip-timed, with mile markers and kilometre markers. The only real hill is Mill Street at mile 4, and it's over in 300 metres.",      "bullets": [        "Water stations every 3 miles, energy gels at mile 8",        "Pacers from 1:25 to 2:45",        "Toilets at the start and at miles 4, 7 and 10"      ],      "visual": {        "type": "mock",        "title": "Course at a glance",        "rows": [          {            "label": "Start",            "value": "Civic Square"          },          {            "label": "Mile 4",            "value": "Mill Street climb",            "tone": "#fbbf24"          },          {            "label": "Mile 7",            "value": "Riverside Park"          },          {            "label": "Mile 10",            "value": "Harbour Road, flat"          },          {            "label": "Finish",            "value": "Civic Square",            "tone": "#34d399"          }        ],        "footer": "Course map and elevation profile in the race guide"      }    },    {      "kind": "timeline",      "id": "raceday",      "eyebrow": "Race day",      "title": "Sunday 18 April, hour by hour",      "items": [        {          "period": "06:30",          "title": "Race village opens",          "text": "Bag drop, toilets and coffee in Civic Square."        },        {          "period": "07:40",          "title": "Start pens close",          "text": "Pens are colour-coded on your bib by expected finish time."        },        {          "period": "08:00",          "title": "Wheelchair race starts",          "text": "Followed by mass start in three waves, 8:05 to 8:20."        },        {          "period": "09:05",          "title": "First finishers",          "text": "Leaders usually arrive just after nine. Finish area open to spectators."        },        {          "period": "11:50",          "title": "Course closes",          "text": "Roads reopen as the sweep vehicle passes. Medals and food for every finisher."        }      ]    },    {      "kind": "pricing",      "id": "entry",      "eyebrow": "Entry",      "title": "Choose your entry",      "text": "All entries include chip timing, a medal, a technical T-shirt and race photos.",      "plans": [        {          "name": "Early entry",          "price": "£34",          "text": "Until 31 December 2026.",          "features": [            "Chip timing",            "Finisher medal and T-shirt",            "Free race photos"          ],          "cta": {            "label": "Enter early",            "href": "#register"          }        },        {          "name": "Standard",          "price": "£42",          "text": "From 1 January to 1 March 2027.",          "features": [            "Chip timing",            "Finisher medal and T-shirt",            "Free race photos",            "Transfer until 1 April"          ],          "featured": true,          "cta": {            "label": "Enter now",            "href": "#register"          }        },        {          "name": "Charity place",          "price": "£0",          "text": "Free entry with a £300 fundraising pledge.",          "features": [            "Choose from 12 local charities",            "Fundraising pack",            "Charity cheer points on course"          ],          "cta": {            "label": "Apply for a place",            "href": "#register"          }        }      ]    },    {      "kind": "hours",      "id": "packs",      "eyebrow": "Race packs",      "title": "Collect your bib and chip",      "text": "Bring your confirmation email and photo ID. A friend can collect with a signed note.",      "rows": [        {          "day": "Friday 16 April",          "time": "12:00 – 20:00"        },        {          "day": "Saturday 17 April",          "time": "09:00 – 18:00"        },        {          "day": "Sunday 18 April",          "time": "No collection on race day"        }      ],      "address": "Northbridge Corn Exchange, 2 Market Place",      "email": "runners@northbridgehalf.org"    },    {      "kind": "faq",      "id": "faq",      "eyebrow": "FAQ",      "title": "Runner questions",      "items": [        {          "q": "What's the minimum age?",          "a": "You must be 17 on race day. Under-18s need a parent or guardian to sign the entry."        },        {          "q": "Can I transfer my place?",          "a": "Standard entries can be transferred until 1 April for a £5 admin fee. Early entries can be deferred to next year instead."        },        {          "q": "Are headphones allowed?",          "a": "Bone-conduction headphones only, so you can hear marshals and emergency vehicles."        },        {          "q": "Is there parking?",          "a": "Park and ride from three sites from 6 am, £4 per car. Roads in the centre close from 5 am."        }      ]    },    {      "kind": "contact",      "id": "register",      "eyebrow": "Register",      "title": "Reserve your place",      "text": "Fill in your details and we'll email a secure link to complete your entry and pay. Places are held for 48 hours.",      "fields": [        "name",        "email",        "phone",        "message"      ],      "button": "Reserve my place"    }  ],  "footer": {    "text": "A closed-road half-marathon through the centre of Northbridge.",    "columns": [      {        "title": "Race",        "links": [          "Course",          "Race day",          "Results"        ]      },      {        "title": "Runners",        "links": [          "Entry",          "Race packs",          "Charity places"        ]      },      {        "title": "Contact",        "links": [          "runners@northbridgehalf.org"        ]      }    ],    "legal": "© Northbridge Half. Sample content: replace it in src/site.ts."  }};

Remix

Remix this template

Describe what to change and the agent starts from Half-marathon registration's files. The box is already started for you: finish “Start from Half-marathon registration 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 Half-marathon registration

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