Skip to content
codexa

Portfolios · React

Wedding photographer

Romantic portfolio for a wedding and portrait photographer, with galleries, collections and an enquiry form.

Wedding photographer 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

An editorial one-pager for a wedding and portrait photographer: recent weddings, a gallery of portrait sessions, collections with prices, how booking works, couples' notes and a date enquiry 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/portfolio-wedding-photographer

src/site.ts
src/site.ts
import type { Site } from "./types"; /** Everything this site shows. Edit freely. */export const site: Site = {  "brand": "Clara Hollis Photography",  "nav": [    {      "label": "Weddings",      "href": "#weddings"    },    {      "label": "Portraits",      "href": "#portraits"    },    {      "label": "Collections",      "href": "#collections"    },    {      "label": "FAQ",      "href": "#faq"    }  ],  "navCta": {    "label": "Check your date",    "href": "#contact"  },  "sections": [    {      "kind": "hero",      "variant": "editorial",      "eyebrow": "Wedding & portrait photographer · Asheville, NC",      "title": "Quiet, honest pictures of the people you love.",      "text": "I photograph around 22 weddings a year across the Blue Ridge and beyond, plus family and portrait sessions in between. Mostly natural light, very little posing, and a full gallery within five weeks.",      "primary": {        "label": "See recent weddings",        "href": "#weddings"      },      "secondary": {        "label": "Check your date",        "href": "#contact"      },      "visual": {        "type": "tiles",        "tones": [          "#9f6b5e",          "#e8d6cf",          "#c9a99c",          "#5b3a33"        ],        "caption": "Grace & Owen, Linville Gorge, October"      }    },    {      "kind": "projects",      "id": "weddings",      "eyebrow": "Recent weddings",      "title": "A few days I keep thinking about",      "items": [        {          "title": "Grace & Owen",          "tag": "Elopement at Linville Gorge",          "year": "2026",          "tone": "#7a4a3f"        },        {          "title": "Hannah & Luis",          "tag": "Barn wedding, 140 guests, Hendersonville",          "year": "2026",          "tone": "#8a6a4f"        },        {          "title": "Maya & Jordan",          "tag": "Courthouse ceremony and dinner downtown",          "year": "2025",          "tone": "#5f4b45"        },        {          "title": "Ellie & Sam",          "tag": "Two-day mountain wedding, Blowing Rock",          "year": "2025",          "tone": "#9b5c55"        }      ]    },    {      "kind": "gallery",      "id": "portraits",      "eyebrow": "Portraits",      "title": "Families, couples and the occasional dog",      "text": "Sessions run 60–90 minutes at a place that means something to you: a back porch, a river, the diner where you had your first date.",      "items": [        {          "title": "The Alvarez family",          "caption": "Golden hour, French Broad River",          "tone": "#8c5a4c"        },        {          "title": "Nora at 92",          "caption": "At home, in her garden",          "tone": "#6e5a4e"        },        {          "title": "Ben & Theo",          "caption": "Engagement session, Craggy Gardens",          "tone": "#7d4f49"        },        {          "title": "First week",          "caption": "Newborn session at home",          "tone": "#a0786a"        },        {          "title": "Walter",          "caption": "A very good boy, aged 11",          "tone": "#5d4037"        }      ]    },    {      "kind": "pricing",      "id": "collections",      "eyebrow": "Collections",      "title": "Wedding collections",      "text": "Every collection includes an online gallery, print rights and a planning call. Travel within 100 miles of Asheville is included.",      "plans": [        {          "name": "Elopement",          "price": "$2,400",          "text": "For ceremonies of up to 20 people.",          "features": [            "Up to 4 hours of coverage",            "Location scouting help",            "250+ edited images",            "Gallery in 3 weeks"          ],          "cta": {            "label": "Ask about elopements",            "href": "#contact"          }        },        {          "name": "Full day",          "price": "$4,800",          "text": "From getting ready to the last dance.",          "features": [            "Up to 9 hours of coverage",            "Second photographer",            "600+ edited images",            "Engagement session included"          ],          "featured": true,          "cta": {            "label": "Check your date",            "href": "#contact"          }        },        {          "name": "Weekend",          "price": "$6,900",          "text": "Rehearsal dinner, wedding day and a send-off brunch.",          "features": [            "Coverage across 2–3 days",            "Second photographer",            "900+ edited images",            "Printed 10×10 album"          ],          "cta": {            "label": "Plan a weekend",            "href": "#contact"          }        }      ]    },    {      "kind": "steps",      "eyebrow": "How it works",      "title": "From first email to your gallery",      "items": [        {          "title": "Say hello",          "text": "Send your date and a little about your plans. I reply within two working days with availability."        },        {          "title": "Hold the date",          "text": "A short video call, then a contract and a 30% retainer to secure your day."        },        {          "title": "Get your gallery",          "text": "A preview of 40 images within a week, and the full gallery within five weeks."        }      ]    },    {      "kind": "quotes",      "eyebrow": "Kind words",      "title": "From couples",      "items": [        {          "quote": "We barely noticed Clara was there, and then the photos arrived and she had caught everything.",          "name": "Hannah P.",          "role": "Married May 2026"        },        {          "quote": "My grandmother is in forty of our pictures. That alone was worth every penny.",          "name": "Luis M.",          "role": "Married May 2026"        },        {          "quote": "She handled the rain, a late bus and a nervous groom without breaking a sweat.",          "name": "Ellie R.",          "role": "Married September 2025"        }      ]    },    {      "kind": "faq",      "id": "faq",      "eyebrow": "Questions",      "title": "Things couples usually ask",      "items": [        {          "q": "How far ahead should we book?",          "a": "Most Saturdays from May to October book 9–14 months out. Weekdays and winter dates are usually easier."        },        {          "q": "Do you travel?",          "a": "Yes. Travel inside 100 miles is included; beyond that I charge cost for travel and one night's stay."        },        {          "q": "Can we get the RAW files?",          "a": "I don't deliver RAW files, but every image in your gallery is a full-resolution edit you can print anywhere."        },        {          "q": "Do you shoot film?",          "a": "I bring a medium-format film camera to every wedding and add 2–3 rolls at no extra cost."        }      ]    },    {      "kind": "contact",      "eyebrow": "Enquiries",      "title": "Check your date",      "text": "Tell me your date, the venue if you have one, and roughly how many guests. I'll reply within two working days.",      "fields": [        "name",        "email",        "date",        "guests",        "message"      ],      "button": "Send enquiry"    }  ],  "footer": {    "text": "Wedding and portrait photography in Asheville and the Blue Ridge.",    "columns": [      {        "title": "Work",        "links": [          "Weddings",          "Portraits",          "Elopements"        ]      },      {        "title": "Contact",        "links": [          "hello@clarahollis.photo",          "(828) 555-0173"        ]      }    ],    "legal": "© Clara Hollis Photography. Sample content: replace it in src/site.ts."  }};

Remix

Remix this template

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

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