Ward Page landing page — "Everything your ward needs to know, in one simple link." Background image of the Manti temple, headline overlaid in white, with create-your-page CTA and a row of color picker dots showing how each ward customizes its look.
Projects / Live

Ward Page

Launched

A single shareable page each Latter-day Saint ward can publish — activities, meeting times, and each Sunday's program, in one link members can actually find.

SvelteKit TypeScript shadcn-svelte Tailwind 3 Supabase Stripe Cloudflare Pages

What it doesLink to heading

Ward Page is a multi-tenant SaaS that lets any Latter-day Saint ward publish a single shareable page — activities, meeting times, weekly sacrament programs, calendar. Each tenant is a “ward” with three roles: owner, editor, and unauthenticated public. Free for 21 days, then $7/month per ward.

I built it after running Lehi 31st Ward on lehi31.com for two years and watching the pattern be useful for more than one ward.

StackLink to heading

  • Framework: SvelteKit 2 + Svelte 4 + TypeScript (strict)
  • UI: Tailwind 3 + shadcn-svelte + bits-ui + Lucide icons
  • Data: Supabase Postgres with server-side auth via @supabase/ssr
  • Payments: Stripe
  • Calendars: ICS import + recurring events
  • Tests: Playwright + Vitest, plus integration tests against a real Supabase
  • Hosting: Cloudflare Pages

ApproachLink to heading

The product is built around tenant isolation at the database — not at the UI. Every content row carries its tenant ID and access is enforced at the data layer. The UI never decides “should this user see this” alone.

Per-tenant feature toggles gate both the admin and the public view. A feature being off hides its entire subtree — nav, pages, data, everywhere.