Files
wedding-planner/README.md
2025-07-24 09:45:23 -04:00

202 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](#planned-features)
- [Updates](#updates)
- [Getting Started](#getting-started)
- [Built With](#built-with)
## Planned Features
- [x] Account Creation
- [x] First time setup to create the admin user
- [x] Invite users via email (smtp) users can be COUPLE, PLANNER, GUEST
- [x] Create local accounts (no use of SMTP)
- [x] Creating and Editing custom events
- [x] Information about each event
- Date/Time
- Event type
- Details
- Location
- [x] Markdown supported notes
- [x] Guest book (contact information)
- [x] Ability to switch between table or card view
- [x] Add Guests to events
- [ ] Invite guests via email
- [ ] Create local account for guest
- [x] Bulk upload
- Creates GuestBookEntry
- Skips dupicates
- Updates entries if uploaded more than once
- [x] 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
#### 7.24.25 Notes and Tasks
**Major Update**
- Added Venues
- Venues are significant locations which can be added to an event.
| Column | Default | Required | Type |
|---|---|---|---|
| Name | null | Yes | String |
| Address | null | Yes | String |
| City/Town | null | Yes | String |
| State | null | Yes | String |
| Postal/Area Code | null | Yes | String |
| Country | 'United States' | Yes | String |
| Phone | null | No | String |
| Email | null | No | String |
- UI changes to Dashboard to make use of Shadcn components
## 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
```
2. Set your enviorment variables
```env
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
```
3. Start the database
```
docker compose up -d db
```
4. Migrate and Generate the Prima files
```
npx prisma migrate dev --name init
npx prisma generate
```
5. 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
3. 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](public/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](https://github.com/briannelson95/wedding-planner/issues).