Project

ELDA Wedding Sites

January 1, 2025

pythonflaskpostgresqljavascriptfull-stackweb-development
eldaweddings.info/
ELDA Wedding Sites

ELDA Wedding Sites on GitHub · Live at eldaweddings.info

ELDA Wedding Sites homepage

Services overview and ceremony packages

Ceremony packages detail page

Venue & Reception Spaces page

Overview

ELDA Wedding Sites is a production-ready, full-stack web application built for a wedding services business. It covers three distinct surfaces — a polished public-facing site, a secure owner/admin intranet, and an invite-only client portal — each with its own routing layer, authentication model, and data scope.

This is the kind of system most developers outsource to a CMS or a SaaS platform. Every piece here is custom-built: the booking pipeline, the payment view, the report engine, the client plan workspace, and the automated admin triage system.

View Source on GitHub


What It Does

The public site handles lead generation: ceremony packages, venue pages, catering, florals, a gallery, and a set of specific service request forms (/request/package, /request/venue, /request/catering, /request/florals). Submissions flow directly into the admin intranet for follow-up.

The admin intranet (/admin) is a fully featured operations dashboard: leads, bookings, transactions, service request intake, and a Report Studio that generates custom exports on demand. An Admin Autopilot module runs autonomous triage on stale bookings against configurable rule thresholds — without manual intervention.

The client portal (/client) is invite-only by default. Clients get a dashboard showing their plan selections, finance snapshot, and communication history — plus a Wedding Inspo board and a milestone-driven Wedding Plan workspace with required and custom tasks.


Core Features

Public-Facing Site

  • Ceremony packages with expanded detail pages
  • Venue gallery, florals, catering, and nearby attractions (Google Maps-linked)
  • Booking request form and client portal entry point
  • Planning Guide and Vow Renewals pages
  • Contact form with service interest selection

Admin Intranet (/admin)

  • Secure login/logout with owner and staff roles
  • Dashboard with leads, bookings, and transaction metrics
  • Luxury Operations Command Center: priority queue and concierge quick-action cards
  • Contact response management with read state, notes, and selected service interests
  • Booking management with status tracking and notes
  • Payments/transactions view with summary cards and status filter
  • Report Studio (/admin/reports/studio): dataset/field/filter-driven custom reports with saved templates and CSV/HTML export
  • Admin Autopilot (/admin/autopilot): rule threshold controls and autonomous stale-booking triage
  • Admin help center with step-by-step operational guides
  • CSV exports for contacts, bookings, payments, and service requests
  • Owner-only admin user management

Client Portal (/client)

  • Invite-only email/password login (Google OAuth also supported)
  • Dashboard with plan selections, finance snapshot, and communication history
  • Wedding Inspo board for colors, themes, florals, and notes
  • Wedding Plan workspace with milestones, required tasks, and custom tasks
  • Auto-linking of bookings and contacts by client email

Tech Stack

LayerTechnology
BackendPython 3.11+ / Flask
ORMFlask-SQLAlchemy / Flask-Migrate
AuthFlask-Login + Google OAuth
EmailFlask-Mail
DatabasePostgreSQL (production) / SQLite (local dev)
FrontendTailwind CSS, Vanilla JavaScript
DeploymentRailway (Gunicorn + Nixpacks)
Testingpytest + Playwright (e2e)

Architecture

The codebase follows a layered modular structure:

  • app/routes/* — HTTP routing and view orchestration
  • app/services/* — shared business logic (attachment policy, email handling)
  • app/models/* — persistence entities and relationships
  • app/utils/* — framework utilities

A full architecture diagram is maintained at docs/architecture.mmd / docs/architecture.png. Release and rollback procedures are documented in docs/RELEASE_ROLLBACK_RUNBOOK.md.


Why It Stands Out

Scope. Most portfolio projects are a CRUD app with one user type. This has three distinct user surfaces, each with its own auth model and data scope, all sharing a single database.

Admin Autopilot. The triage system doesn’t just display stale bookings — it acts on them autonomously against configurable rules. That’s the difference between a reporting tool and an operations tool.

Report Studio. Rather than hardcoded exports, the report engine lets the owner define datasets, fields, and filters at runtime, then save templates. That’s a feature decision, not just an implementation choice.

Production-ready deployment. Railway deployment with render.yaml, Gunicorn, PostgreSQL TLS, canonical host enforcement, rate-limited auth routes, and a full Playwright e2e test suite covering public, client, and admin surfaces.