https://github.com/jacobstephens2/wedding-platform
A custom-built wedding website with RSVP management, guest tracking, registry integration, and an admin dashboard. Built with PHP and MySQL.
https://github.com/jacobstephens2/wedding-platform
admin-dashboard apache guest-management mysql php phpmailer pwa registry rsvp seating-chart wedding wedding-website
Last synced: 4 days ago
JSON representation
A custom-built wedding website with RSVP management, guest tracking, registry integration, and an admin dashboard. Built with PHP and MySQL.
- Host: GitHub
- URL: https://github.com/jacobstephens2/wedding-platform
- Owner: JacobStephens2
- Created: 2025-11-26T16:35:22.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-04-04T03:36:39.000Z (7 days ago)
- Last Synced: 2026-04-04T04:11:45.625Z (7 days ago)
- Topics: admin-dashboard, apache, guest-management, mysql, php, phpmailer, pwa, registry, rsvp, seating-chart, wedding, wedding-website
- Language: PHP
- Homepage: https://wedding.stephens.page
- Size: 2.05 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Wedding Website
The wedding website of Jacob Stephens and Melissa Longua, live at [wedding.stephens.page](https://wedding.stephens.page).
## Tech Stack
- **Backend**: PHP 8.3+ / Apache / MySQL 8
- **Frontend**: Vanilla JavaScript, CSS3 with custom properties
- **Email**: PHPMailer via Mandrill SMTP
- **Dependencies**: Composer (`vlucas/phpdotenv`, `phpmailer/phpmailer`)
## Features
### Guest-Facing
- **Home** — countdown timer, background video
- **RSVP** — name lookup, group RSVP (ceremony & reception), dietary restrictions, song requests
- **Story** — relationship timeline with photo carousels and embedded video
- **Registry** — gift list with purchase tracking and fund progress bars
- **Gallery** — photo grid with lightbox and swipe navigation
- **About** — details about the Nuptial Mass and Holy Communion
- **Travel** — parking, transportation, and hotel room blocks
- **Contact** — visitor message form
### Admin
- **Guest Management** — add/edit/delete guests, plus-ones, rehearsal invites, child/infant tracking
- **RSVP Dashboard** — filterable/sortable view of all RSVPs with bulk operations
- **Seating Chart** — drag-and-drop table assignments, floor plan visualization, grid and card views, undo support
- **Registry Management** — add/edit items, mark purchases, control publication
- **Fund Tracking** — house fund and honeymoon fund contribution management
- **Gallery Management** — upload and organize photos by story section
### Other
- Dark mode toggle with `localStorage` persistence
- Responsive design with mobile hamburger navigation
- Private asset serving through `assets.php`
- Cron jobs for registry low-stock alerts and uptime monitoring
## Project Structure
```
public/ Web root (Apache DocumentRoot)
├── css/style.css Stylesheet with light/dark themes
├── js/main.js Client-side logic
├── api/ JSON API endpoints
├── includes/ Shared header, footer, theme init
├── images/ Static images
└── *.php Page and admin files
private/ Not web-accessible
├── config.php App constants and configuration
├── db.php PDO database connection
├── admin_auth.php Session-based authentication
├── email_handler.php Mandrill SMTP wrapper
├── sql/ Database schema and migrations
├── cron/ Scheduled scripts
├── photos/ Organized by story section
└── videos/ Private video storage
```
## Setup
See [SETUP.md](SETUP.md) for full installation instructions including Apache config, environment variables, SSL, and cron setup.
### Quick Start
```bash
composer install
cp private/.env.example private/.env # edit with your credentials
# Run SQL migrations in private/sql/
# Point Apache DocumentRoot to public/
```
## Environment Variables
Configured in `private/.env`:
| Variable | Purpose |
|---|---|
| `DB_HOST`, `DB_NAME`, `DB_USER`, `DB_PASS` | MySQL connection |
| `MANDRILL_SMTP_HOST`, `MANDRILL_SMTP_PORT`, `MANDRILL_SMTP_USER`, `MANDRILL_SMTP_PASS` | Email delivery |
| `ADMIN_PASSWORD` | Admin area access |
| `RSVP_CHECK_PASSWORD` | RSVP dashboard access |
| `RSVP_EMAIL`, `CONTACT_EMAIL` | Notification recipients |
| `REGISTRY_LOW_AVAILABLE_THRESHOLD` | Low-stock alert threshold |
| `REGISTRY_CHECK_COOLDOWN_HOURS` | Alert cooldown period |