zachspiel / wedding-rsvp

Nextjs website for our wedding 💍
https://zachandsedona.com
MIT License
1 stars 0 forks source link

Spielberger Wedding Website 💍

Made with Supabase Mantine Next JS TypeScript

Spielberger Wedding Logo

Welcome to our Wedding RSVP application! This project is built using Next.js, TypeScript, and Supabase to streamline the RSVP process for our upcoming wedding. Guests can easily confirm their attendance and provide additional details.

Admin users can also manage the guest list, update RSVP statuses, events, and modify content on the homepage.

The latest published version of the website can be found at https://www.zachandsedona.com

Getting Started

  1. Clone this repository:
git clone https://github.com/zachspiel/wedding-rsvp.git
  1. Navigate to the project directory:
cd wedding-rsvp
  1. Install dependencies
yarn install
  1. Create a Supabase project with a database, authentication, and storage.

  2. Go to API settings under project settings. Create a .env file in the project root and add your Supabase configuration:

NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_ANON_KEY
  1. Add the following variables to the .env file. These are used to send emails to guests when they RSVP.
EMAIL (email that will send mail)
PASS (password for email to send mail)
EMAIL_RECIPIENTS (email that will recieve mail once guests RSVP)

Running the Project

Run the following command to start the app locally:

yarn dev

Testing

This project uses vitest to test various operations on the database (add guests, modify RSVPs, view events, etc.).

yarn test

A coverage report can also be generated with the following command.

yarn coverage

Project Structure

The structure for this project is based off of Bulletproof React. Common components can be found under src/components. Specific features like the guest book or RSVP form can be found under src/features.

.
└── src
    ├── app
    │   ├── api
    │   ├── guestList (admin route for managing guest list)
    │   ├── login (public login page)
    │   └── page.tsx
    ├── components
    ├── context
    ├── database
    ├── features
    │   └── [FEATURE]
    │       ├── components
    │       ├── index.tsx
    │       └── styles.module.css
    ├── hooks
    └── types

Database Schema

The current database schema can be found below. This current design allows groups to have any number of guests who can individually RSVP to multiple events.

The other tables (guestbook, faq, gallery) allow admin users to dynamically modify content on the homepage without having to redeploy the project.

Database Schema

License

This project is licensed under the MIT License.