giftarmaal Svelte Themes

Giftarmaal

Easily self-hostable wedding website boilerplate. Svelte, NestJS and Postgres.

Giftarmaal logo

πŸ’ Giftarmaal

A modern wedding website boilerplate
Svelte frontend Β· NestJS backend Β· PostgreSQL

✨ Modern · ⚑ Fast · 🧠 Minimal dependencies


✨ What is Giftarmaal?

Giftarmaal is a modern, self-hostable wedding website boilerplate with batteries included.
It can be deployed with a simple Makefile command and hosted on any Docker-compliant platform β€” or even on a Raspberry Pi in a closet at home.

The motivation behind the project is to give couples (and developers) a clean, extensible starting point for their wedding website.
The design uses simple Svelte components with inline HTML/scripts, plus a shared Template.svelte to avoid duplication.

Content is stored in the database as structured blocks, giving you full control over content while intentionally not letting you break the design.
That’s deliberate β€” flexibility where it matters, consistency where it counts.

To support extensibility, the system is built around three core domains:


πŸ“š Core Data Domains

1. πŸ‘₯ Persons

Anyone connected to the wedding belongs here: guests, toastmasters, bride/groom, vendors.
Promote or assign roles to allow:

  • Guest list exports
  • Thank-you card lists
  • Emergency contact sheets
  • β€œWho’s who” directory
  • Future features (email, push, PDF exports)

2. πŸ“¦ ContentBlock

Where all page content lives.
Managed through an admin UI at /handtere (temporary).

Blocks can be:

  • Sections
  • Headings
  • WYSIWYG text
  • Grids
  • Nested blocks

The frontend simply loops through them and renders with pre-defined Svelte components.


3. 🐦 Message

A lightweight feed for quick wedding updates β€” like tweets, but without asking guests to join X.

Not yet surfaced in the UI, but intended for:

  • Last-minute notifications
  • Weather updates
  • Transportation info
  • Push / email integrations (future)

πŸ—οΈ Tech Stack

  • βœ… Svelte β€” fast, elegant UI
  • βœ… NestJS β€” modular backend
  • βœ… PostgreSQL β€” single source of truth
  • βœ… SSE (Server-Sent Events) β€” realtime updates
  • βœ… Docker-first β€” predictable, portable, reproducible

Frontend

  • 🧑 Svelte (no SvelteKit required)
  • ⚑ Vite dev server
  • πŸ—ΊοΈ Leaflet + OSM maps (no API keys)

Backend

  • 🐦 NestJS
  • πŸ” Server-Sent Events (SSE)
  • 🧩 Feature-oriented module structure
  • πŸ—„οΈ PostgreSQL

Infra

  • 🐳 Docker & Docker Compose
  • πŸ› οΈ pnpm
  • πŸ§ͺ Suitable for Fly.io, VPS, or home server

πŸš€ Features (Current & Planned)

  • πŸ–ΌοΈ Full-bleed hero section
  • πŸ•°οΈ Wedding program timeline
  • πŸ“Έ Guest profile images (upload via admin)
  • πŸ“‹ Guest management w/ roles
  • πŸ“¨ RSVP via invitation codes (in progress)
  • ⚑ Live updates via SSE

Admin (work in progress)

  • πŸ› οΈ Edit program & locations
  • πŸ“Έ Manage images
  • πŸ‘₯ Manage guest list
  • πŸ” Simple auth (no OAuth madness) (coming)

🧩 Project Structure (Monorepo)

apps/
 β”œβ”€ web/        # Svelte frontend
 └─ api/        # NestJS backend
packages/
 └─ shared/     # Shared types & utilities

Howto?

Init Prisma and Generate Client

docker compose exec api sh -lc "cd /app && npx -y [email protected] pnpm --filter api exec prisma migrate dev --name init"

Run migrations

docker compose exec api sh -lc "cd /app && npx -y [email protected] pnpm prisma migrate deploy"

Top categories

Loading Svelte Themes