Content sites

Wedding photography website with galleries, prices, contact

Static Astro portfolio for a wedding photographer with gallery pages, a price list, and a contact form that can deploy free on Netlify.

astrocssnetlify

Built 1 time, downloaded 0 times.

Install from your terminal

Run this in your project folder. It signs you in, shows what changes and asks before it overwrites a file.

npx claude-lab add wedding-photography-website-with-galleries-prices-contact-e19fea
CLAUDE.md
# Wedding photography website

This is a static website for a wedding photographer. Its visitors are engaged couples looking for a photographer. The tone is warm, calm, and simple. The site shows galleries of past weddings, a price list, and a contact form that leads to an inquiry email.

## Stack

- Astro (latest stable) for the static site.
- Plain CSS, kept in one small stylesheet.
- No CMS, no database, no backend code.

## Commands

- `npm install`: install dependencies.
- `npm run dev`: start the dev server at localhost:4321.
- `npm run build`: build the site into `dist/`.
- `npm run check`: run the Astro type and content check.
- `npm run preview`: preview the built site locally.

## Structure

- `src/pages/`: index, galleries, prices, about, contact, thank-you, privacy.
- `src/content/galleries/`: one markdown file per wedding.
- `src/data/prices.json`: all prices, in one place.
- `src/data/site.ts`: site settings, including the placeholder `FORM_ENDPOINT_ID`.
- `public/galleries/<slug>/`: web-sized images for each gallery.
- `src/components/`: Nav, Footer, GalleryGrid, PriceCard.

## Rules

- Prices live only in `src/data/prices.json`. Never hardcode a price in a page or component.
- Every image needs descriptive alt text.
- Resize images to 2000px wide or less, and under 400 KB, before they go into `public/`.
- Never put client names or couple names in filenames. Never put private wedding details in public files unless the gallery file says `published: true`.
- The contact form posts to the endpoint in `src/data/site.ts`, which is the placeholder `FORM_ENDPOINT_ID`. Never invent or commit a real endpoint key or email password.
- Do not add analytics or tracking scripts unless the owner asks for them in a plan. If one is proposed, explain the privacy impact first.
- Before saying a task is done, run the verify skill.

## Gotchas

- The owner's real name, email, phone, and location are placeholders marked `YOUR_NAME`, `YOUR_EMAIL`, and `YOUR_PHONE`. They stay as placeholders until the owner replaces them.
- Leave placeholders in place rather than guessing real details.

@REVIEW.md
Use for my project