warkanum 143161c234 feat(ui): enhance Countdown and layout components
* Improve Countdown component styling and structure
* Update layout to include responsive menu and background pattern
* Adjust PhotoBackground and page styles for better presentation
* Add damask pattern SVG for background use
2026-08-11 23:58:28 +02:00

Zoé & Shaldon — Wedding Site

Save-the-date / RSVP / guest photo-upload site. Wedding: 7 November 2026. Accessed via QR code from the printed save-the-date. Hosted at https://zoeshaldon.warky.info.

See PLAN.md for full design.

Stack

  • ui/ — SvelteKit (static adapter), Tailwind + Skeleton theming
  • server/ — Go, single binary, embeds the built frontend
  • data/ — runtime SQLite DB + guest-uploaded photos (gitignored, not yet created)

Status

Working prototype. ui/ builds and server/ serves it + the API, verified locally (RSVP, gated photo upload, countdown). Not yet run via Docker end-to-end; SMTP not yet configured. See PLAN.md "Prototype status" for the current gap list.

Develop locally

cd ui && npm install && npm run build   # outputs ui/build
rm -rf server/web/dist && cp -r ui/build server/web/dist
cd ../server && go build -o wedding-server .
cp ../config.example.yaml ../config.yaml   # edit the wedding date/SMTP/etc.
CONFIG_PATH=../config.yaml ./wedding-server   # serves on :8080

Requirements

  • Countdown to the wedding date, with day/date/time and venue, on the landing page.
  • Landing page background: photos from ui/assets/photos slide in/out continuously behind the hero content.
  • RSVP form: one or more guest names (add/remove rows, at least one required), message (optional) — no email/phone captured → saved + emailed to couple. Shows the RSVP deadline and its own countdown.
  • Photo upload: name (required), message (optional), email/phone (optional) + photo files → saved to data/photos/, links emailed to couple.
  • Photo upload only opens 7 November 2026 (same date drives the countdown) — enforced server-side, not just hidden in the UI.
  • Venue, RSVP deadline, and RSVP phone number sourced from the formal invitation (concept/IMG-20260811-WA0020.jpg).

Repo layout

ui/                  SvelteKit frontend (assets/photos/ = curated background photos, checked in)
server/               Go backend (API + static file serving)
data/                 runtime data (gitignored)
concept/              source assets (save-the-date image)
config.example.yaml   config template (checked in)
config.yaml           real config: date, SMTP, storage path (gitignored)
Dockerfile            multi-stage: build ui -> build server -> runtime image
docker-compose.yml    wedding app, published to 127.0.0.1:8080 only

Config

Copy config.example.yaml to config.yaml and fill in the wedding date, SMTP settings, and storage path. Path is resolved from CONFIG_PATH (default ./config.yaml) — that's the only env var; everything else lives in the file.

Run with Docker

Runs behind an existing Apache reverse proxy on the host (Apache owns TLS for zoeshaldon.warky.info) — see PLAN.md for the Apache vhost config. Not yet verified end-to-end.

cp config.example.yaml config.yaml   # edit it first
docker compose up --build
S
Description
Zoe & Shaldon Wedding
Readme
38 MiB
Languages
Svelte 34.8%
Go 33.1%
CSS 21.3%
TypeScript 9.4%
Dockerfile 0.9%
Other 0.5%