Skip to content
codexa

Websites · React

Barber shop

Dark, sharp barber shop site with a cut and shave price list, the barbers, reviews, hours and a booking form.

Barber 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 site for a barber shop or men's grooming studio: a dark theme, cuts and shaves with prices, the barbers, customer quotes, opening hours with the address, and an appointment booking 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-barber-shop

src/site.ts
src/site.ts
import type { Site } from "./types"; /** Everything this site shows. Edit freely. */export const site: Site = {  "brand": "Sixth Street Barbers",  "nav": [    {      "label": "Services",      "href": "#services"    },    {      "label": "Barbers",      "href": "#barbers"    },    {      "label": "Hours",      "href": "#hours"    }  ],  "navCta": {    "label": "Book a chair",    "href": "#contact"  },  "sections": [    {      "kind": "hero",      "variant": "split",      "eyebrow": "Barbers · Fourth Ward, Charlotte",      "title": "Good cuts, hot towels, and no rush.",      "text": "Four chairs, four barbers, and appointments every 45 minutes so nobody gets hurried out. Walk-ins when there is a gap.",      "primary": {        "label": "Book a chair",        "href": "#contact"      },      "secondary": {        "label": "Prices",        "href": "#services"      },      "visual": {        "type": "tiles",        "tones": [          "#78350f",          "#292524",          "#57534e",          "#1c1917"        ],        "caption": "Chair two, Saturday morning"      },      "note": "Card or cash. Tips welcome, never expected."    },    {      "kind": "menu",      "id": "services",      "eyebrow": "Services",      "title": "Cuts & shaves",      "text": "All cuts include a wash, a hot towel and a neck shave.",      "groups": [        {          "name": "Hair",          "items": [            {              "name": "Signature cut",              "text": "Scissor or clipper, 45 min",              "price": "$42"            },            {              "name": "Skin fade",              "text": "45 min",              "price": "$45"            },            {              "name": "Buzz cut",              "text": "One length all over",              "price": "$25"            },            {              "name": "Kids' cut",              "text": "Under 12",              "price": "$28"            }          ]        },        {          "name": "Beard & shave",          "items": [            {              "name": "Hot towel shave",              "text": "Straight razor, two towels, 40 min",              "price": "$40"            },            {              "name": "Beard trim & shape",              "text": "With line-up",              "price": "$22"            },            {              "name": "Cut & beard",              "text": "The full hour",              "price": "$60"            },            {              "name": "Grey blending",              "price": "$30"            }          ]        }      ]    },    {      "kind": "split",      "eyebrow": "The shop",      "title": "A barber shop that feels like one",      "text": "We opened in a 1920s storefront on Sixth Street in 2015. Leather chairs, a record player, and coffee or a cold soda while you wait.",      "bullets": [        "Clippers disinfected between every client",        "Our own pomade and beard oil, made in Charlotte",        "Wheelchair-accessible front entrance"      ],      "visual": {        "type": "card",        "tone": "#292524",        "title": "Wedding parties",        "lines": [          "Cuts and shaves for up to 6",          "Shop to yourselves on Sunday",          "Whiskey and coffee included"        ]      },      "reverse": true    },    {      "kind": "team",      "id": "barbers",      "eyebrow": "Barbers",      "title": "Who is behind the chair",      "items": [        {          "name": "Andre Wallace",          "role": "Owner, fades",          "tone": "#78350f"        },        {          "name": "Luis Ortega",          "role": "Scissor cuts",          "tone": "#44403c"        },        {          "name": "Tyler Banks",          "role": "Shaves & beards",          "tone": "#57534e"        },        {          "name": "Sam Rivers",          "role": "Kids & classic cuts",          "tone": "#3f3a2e"        }      ]    },    {      "kind": "quotes",      "eyebrow": "Reviews",      "title": "From the chair",      "items": [        {          "quote": "Andre has cut my hair for eight years. I moved across town and still drive back.",          "name": "Chris M.",          "role": "Regular since 2017"        },        {          "quote": "The hot towel shave is the most relaxing 40 minutes of my month.",          "name": "David O.",          "role": "Monthly shave"        },        {          "quote": "My son's first haircut. Sam was patient and gave him a lollipop and the hair in an envelope.",          "name": "Keisha T.",          "role": "Parent"        }      ]    },    {      "kind": "hours",      "id": "hours",      "eyebrow": "Hours",      "title": "When we are open",      "text": "Street parking on Sixth Street, free after 6 pm.",      "rows": [        {          "day": "Tuesday – Friday",          "time": "10:00 – 19:00"        },        {          "day": "Saturday",          "time": "8:00 – 16:00"        },        {          "day": "Sunday",          "time": "Private bookings"        },        {          "day": "Monday",          "time": "Closed"        }      ],      "address": "312 W Sixth Street, Charlotte, NC",      "phone": "(704) 555-0148",      "email": "chair@sixthstreetbarbers.com"    },    {      "kind": "contact",      "eyebrow": "Booking",      "title": "Book a chair",      "text": "Pick a day and tell us the service and barber you want. We text to confirm the time.",      "fields": [        "name",        "phone",        "date",        "message"      ],      "button": "Request booking"    }  ],  "footer": {    "text": "Cuts, fades and hot towel shaves in Fourth Ward.",    "columns": [      {        "title": "Shop",        "links": [          "312 W Sixth Street",          "(704) 555-0148"        ]      },      {        "title": "Services",        "links": [          "Cuts",          "Shaves",          "Wedding parties",          "Gift cards"        ]      },      {        "title": "Follow",        "links": [          "Instagram"        ]      }    ],    "legal": "© Sixth Street Barbers. Sample content: replace it in src/site.ts."  }};

Remix

Remix this template

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

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