2025-07-05 10:07:17 -04:00
2025-07-05 10:07:17 -04:00
2025-07-05 10:07:17 -04:00
2025-07-04 16:09:55 -04:00
2025-07-04 16:09:55 -04:00
2025-07-04 16:09:55 -04:00
2025-07-02 17:22:16 -04:00
2025-06-24 16:31:13 -04:00
2025-06-30 21:39:23 -04:00
2025-07-02 18:49:32 -04:00
2025-06-29 11:14:21 -04:00
2025-07-04 16:09:55 -04:00
2025-06-30 17:20:27 -04:00
2025-06-29 11:14:21 -04:00
2025-06-30 17:20:27 -04:00
2025-07-04 16:09:55 -04:00
2025-07-04 16:09:55 -04:00
2025-07-02 17:22:16 -04:00
2025-07-05 10:07:17 -04:00

Wedding and Event Planner

My goal for this project is to be an all-in-one self hosted event planner for major events such as weddings, bridal showers and engagement parties. Users will be able to spin this up as a single Docker container which will create the database and frontend.

Table of Contents

Planned Features

  • Account Creation
    • First time setup to create the admin user
    • Invite users via email (smtp) users can be COUPLE, PLANNER, GUEST
    • Create local accounts (no use of SMTP)
  • Creating and Editing custom events
    • Information about each event
      • Date/Time
      • Event type
      • Details
      • Location
    • Markdown supported notes
  • Guest book (contact information)
    • Ability to switch between table or card view
    • Add Guests to events
    • Invite guests via email
    • Create local account for guest
    • Bulk upload
      • Creates GuestBookEntry
      • Skips dupicates
      • Updates entries if uploaded more than once
  • Managing RSVP lists
  • Guest accounts
  • Gift Registries
    • Ability for guests to mark an item as purchased
  • Task Management
  • Custom Theming

Possible Features

  • Budget Tracking
  • Vendor Tracking
  • Seating Charts
  • Calendar/Timeline Builder

Updates

6.24.25

  • added ability to invite users via email making use of a smtp server and nodemailer
    • inviteTokens added to db which are used to sign up and expire onDate and after use
  • added ability to create local users if you don't want to use smtp /admin/create-user
  • created user pages
  • added usernames to Users table
  • updated first time setup to include username creation

6.25.25

  • now able to see and edit event data from the individual event page

6.26.25

The Guest Book

  • added guest-book page, viewable by PLANNER and COUPLE accounts
    • db query is secure behind PLANNER and COUPLE auth sessions
  • added ability to add and edit guests to guest book
  • save guest infomation (name, email, phone, address, side (which side of the couple), notes)

6.28.25

RSVP List

  • add guests from GuestBook to any event
  • search GuestBook to add guests
  • change status of RSVP

6.29.25 – Notes and Tasks

  • Markdown note field per event
  • Inline editing with live preview
  • Task list per event with due dates & completion toggle

Getting Started

This app is fully deployable with Docker or runnable in development with Node.

Development Mode

  1. Clone the repo
git clone https://github.com/briannelson95/wedding-planner.git
  1. Set your enviorment variables
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/wedding_planner
NEXTAUTH_SECRET=your-secret
NEXTAUTH_URL=http://localhost:3000
NEXT_PUBLIC_BASE_URL=http://localhost:3000

SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your@email.com
SMTP_PASS=yourpassword
SMTP_FROM_NAME=Wedding Planner
SMTP_FROM_EMAIL=your@email.com
  1. Start the database
docker compose up -d db
  1. Migrate and Generate the Prima files
npx prisma migrate dev --name init
npx prisma generate
  1. Install dependencies and start app
npm install
npm run dev

Self-Hosted (Production) via Docker

  1. Copy .env.production Make a copy of your .env as .env.production and customize values.

  2. Update docker-compose.yml Already included in the repo – here's what it does:

  • Runs a postgres:15 container
  • Builds the app from the Dockerfile
  • Runs migrations before starting the frontend
  1. Run the app
docker compose up --build

This will expose your instance at http://localhost:3000

Advanced Features

Bulk Uploading Guests to the Guest Book

You can quickly populate your Guest Book by uploading a .csv file with your guest data. This is useful for importing lists from spreadsheets or other planning tools.

Required Format

The CSV file must contain the following column headers:

Column Name Required Description
first ✅ Yes First name of guest
last ✅ Yes Last name of guest
side ✅ Yes The side of the couple they are on (e.g., "Bride", "Groom")
email ❌ No Guest's email address
phone ❌ No Guest's phone number
address ❌ No Street address
notes ❌ No Any special notes or details

Only first, last, and side are required — the rest are optional.

Download Example CSV

To helo you get started, you can download a sample CSV file here: Download sample_guest_upload.csv This example includes 2 entries:

  • John Smith (side: Groom)
  • Jane Dow (side: Bride) Feel free to use this as a template for formatting your own guest lsit before uploading.
Example CSV Content
first,last,side,email,phone,address,notes
Alice,Smith,Brian,alice@example.com,555-1234,"123 Main St","Vegetarian"
Bob,Jones,Kate,bob@example.com,,,
Duplicates
  • Uploads skip exact duplicates (based on first and last name).
  • If a match is found and new information is available (e.g. a phone number), the guest record will be updated automatically.
Uploading a File
  1. Navigate to the Guest Book page.
  2. Click the "Upload CSV" button next to the "Add Guest" button.
  3. Select a .csv file from your computer.
  4. Confirm the filename is displayed.
  5. Click "Upload" — a confirmation will be shown with the number of guests added or updated.

Built With

  • NextJS 15
  • NextAuth
  • Prisma
  • TailwindCSS
  • PostgresDB
  • Docker

Ready to start planning your wedding or big event? Try it now or contribute ideas via GitHub Issues.

Description
A self hosted wedding and event planning application to stay organized
Readme 615 KiB
Languages
TypeScript 96.8%
CSS 2.3%
Nix 0.6%
Dockerfile 0.2%
JavaScript 0.1%