Skip to content
codexa

Websites · React

Walking tour operator

Lively walking tour site with small-group tours and prices, the route's stops, how booking works, reviews and FAQs.

Walking tour operator 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 site for a walking tour or local experience operator: tours with prices and durations, the stops along the way, how booking works, guest reviews, practical questions and a booking request 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/site-walking-tours

src/site.ts
src/site.ts
import type { Site } from "./types"; /** Everything this site shows. Edit freely. */export const site: Site = {  "brand": "Alfama on Foot",  "nav": [    {      "label": "Tours",      "href": "#tours"    },    {      "label": "The route",      "href": "#route"    },    {      "label": "Reviews",      "href": "#reviews"    },    {      "label": "FAQ",      "href": "#faq"    }  ],  "navCta": {    "label": "Book a tour",    "href": "#contact"  },  "sections": [    {      "kind": "hero",      "variant": "split",      "eyebrow": "Small-group walking tours · Lisbon",      "title": "Lisbon's oldest streets, with someone who grew up in them.",      "text": "Two and a half hours through Alfama and Mouraria with a local guide, a stop for ginjinha, and never more than ten people in a group.",      "primary": {        "label": "See the tours",        "href": "#tours"      },      "secondary": {        "label": "Book a date",        "href": "#contact"      },      "visual": {        "type": "card",        "tone": "#881337",        "title": "Next departures",        "lines": [          "Daily at 10:00 and 16:30",          "Meet at Largo do Chafariz de Dentro",          "English, Portuguese and Spanish"        ]      },      "note": "Free cancellation up to 24 hours before the tour."    },    {      "kind": "pricing",      "id": "tours",      "eyebrow": "Tours",      "title": "Choose a walk",      "text": "Per person. Children under 12 walk free.",      "plans": [        {          "name": "Alfama classic",          "price": "€28",          "text": "2½ hours through the old Moorish quarter.",          "features": [            "Max 10 guests",            "Ginjinha tasting",            "Daily, 10:00 and 16:30"          ],          "cta": {            "label": "Book",            "href": "#contact"          }        },        {          "name": "Fado at dusk",          "price": "€65",          "text": "Evening walk ending with a fado set and petiscos.",          "features": [            "Max 8 guests",            "Dinner and one drink",            "Thursday to Saturday, 19:00"          ],          "featured": true,          "cta": {            "label": "Book",            "href": "#contact"          }        },        {          "name": "Private walk",          "price": "€180",          "period": "/group",          "text": "Your own guide for up to six people.",          "features": [            "Any start time",            "Route tailored to you",            "Stroller friendly on request"          ],          "cta": {            "label": "Enquire",            "href": "#contact"          }        }      ]    },    {      "kind": "gallery",      "id": "route",      "eyebrow": "The route",      "title": "Six stops on the classic walk",      "items": [        {          "title": "Chafariz de Dentro",          "caption": "Where we meet, by the old fountain",          "tone": "#9f1239"        },        {          "title": "Beco do Carneiro",          "caption": "Lisbon's narrowest alley",          "tone": "#57534e"        },        {          "title": "Largo de São Miguel",          "caption": "Grilled sardines in June",          "tone": "#a16207"        },        {          "title": "Sé Cathedral",          "caption": "Built in 1147, rebuilt many times",          "tone": "#78716c"        },        {          "title": "Miradouro de Santa Luzia",          "caption": "Tiles and the river view",          "tone": "#0e7490"        },        {          "title": "A Ginjinha do Largo",          "caption": "Sour cherry liqueur, one glass",          "tone": "#7f1d1d"        }      ]    },    {      "kind": "steps",      "eyebrow": "How it works",      "title": "Booking is simple",      "items": [        {          "title": "Pick a date",          "text": "Send the form or message us. We confirm within a few hours with the meeting point on a map."        },        {          "title": "Meet your guide",          "text": "Look for the red umbrella. Wear shoes with grip; Alfama's cobbles are steep and polished."        },        {          "title": "Pay after",          "text": "Pay your guide by card or cash at the end. If you did not enjoy it, you do not pay."        }      ]    },    {      "kind": "quotes",      "id": "reviews",      "eyebrow": "Reviews",      "title": "From recent walkers",      "items": [        {          "quote": "Inês showed us her grandmother's street and the bakery she still buys bread from. Best morning of our trip.",          "name": "Laura K.",          "role": "Classic walk, May"        },        {          "quote": "The fado evening was intimate and the food kept coming. Book it early.",          "name": "Ahmed S.",          "role": "Fado at dusk"        },        {          "quote": "Brilliant with our two kids. They still talk about the narrowest alley.",          "name": "The Dowd family",          "role": "Private walk"        }      ]    },    {      "kind": "faq",      "id": "faq",      "eyebrow": "FAQ",      "title": "Before you walk",      "items": [        {          "q": "How hilly is it?",          "a": "Quite. There are steep sections and plenty of steps, with short stops every 15 minutes. Ask us about a flatter route."        },        {          "q": "What if it rains?",          "a": "We walk in light rain and lend umbrellas. In heavy storms we reschedule or refund in full."        },        {          "q": "Is the tour wheelchair accessible?",          "a": "The classic route is not, because of the stairs. Our private walk can follow an accessible route through Baixa."        }      ]    },    {      "kind": "contact",      "eyebrow": "Book",      "title": "Book a walk",      "text": "Tell us the tour, the date and how many are coming. We reply within a few hours, usually sooner.",      "fields": [        "name",        "email",        "date",        "guests",        "message"      ],      "button": "Request booking"    }  ],  "footer": {    "text": "Small-group walking tours in Alfama and Mouraria.",    "columns": [      {        "title": "Meet",        "links": [          "Largo do Chafariz de Dentro",          "+351 912 555 014"        ]      },      {        "title": "Tours",        "links": [          "Alfama classic",          "Fado at dusk",          "Private walks"        ]      },      {        "title": "Follow",        "links": [          "Instagram",          "Newsletter"        ]      }    ],    "legal": "© Alfama on Foot. Sample content: replace it in src/site.ts."  }};

Remix

Remix this template

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

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