Skip to content

arshshtty/rsvp

Repository files navigation

RSVP Event Management App

A modern, full-stack RSVP management application built with Next.js, PostgreSQL, and shadcn/ui. Organizers can create events and collect RSVPs with custom questions, while guests can easily respond and manage their attendance.

Features

For Organizers

  • Create Events with rich details:

    • Banner images (uploaded to S3)
    • Rich text event descriptions
    • Date, time, and location
    • Guest limits
    • Custom questions (e.g., dietary requirements)
    • Optional plus-one settings
    • Email/phone collection (optional or required)
  • Manage Events via secure edit URL:

    • View RSVP statistics (Yes/No/Maybe counts)
    • See total guest count (including plus-ones)
    • View all RSVP responses with custom answers
    • Edit event details
    • Automatic email notifications to guests when event is updated
  • No Login Required: Organizers receive a unique edit link to manage their event

For Guests

  • View Event Details: Beautiful event page with all information
  • Submit RSVP: Simple form with Yes/No/Maybe responses
  • Plus-Ones: Indicate how many additional guests (if allowed)
  • Custom Questions: Answer event-specific questions
  • Edit Responses: Receive a unique link to update RSVP anytime
  • Email Confirmations: Automatic confirmation emails (if email provided)

Tech Stack

  • Framework: Next.js 14 (App Router)
  • Database: PostgreSQL with Prisma ORM
  • UI: shadcn/ui with Tailwind CSS
  • Rich Text: Tiptap editor
  • Storage: AWS S3 for images
  • Email: Resend
  • Styling: Custom theme with Plus Jakarta Sans font

Getting Started

Prerequisites

  • Node.js 18+ and npm
  • PostgreSQL database
  • AWS account with S3 bucket
  • Resend account for emails

Installation

  1. Clone the repository
git clone <your-repo-url>
cd rsvp
  1. Install dependencies
npm install
  1. Set up environment variables

Copy .env.example to .env and fill in your values:

cp .env.example .env

Required environment variables:

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/rsvp?schema=public"

# AWS S3
AWS_REGION="us-east-1"
AWS_ACCESS_KEY_ID="your-access-key"
AWS_SECRET_ACCESS_KEY="your-secret-key"
AWS_S3_BUCKET="your-bucket-name"

# Email (Resend)
RESEND_API_KEY="your-resend-api-key"
RESEND_FROM_EMAIL="noreply@yourdomain.com"

# App
NEXT_PUBLIC_APP_URL="http://localhost:3000"
  1. Set up the database
npx prisma generate
npx prisma db push
  1. Run the development server
npm run dev

Open http://localhost:3000 in your browser.

Usage

Creating an Event

  1. Visit the home page
  2. Fill out the event creation form:
    • Add event title, description, and banner image
    • Set date, time, and location
    • Configure guest settings (email/phone collection, plus-ones)
    • Add custom questions
    • Optionally provide your email to receive the management link
  3. Submit the form
  4. You'll be redirected to the event management dashboard
  5. Save the edit URL to manage your event later

Managing an Event

Access your event dashboard using the edit URL:

  • Dashboard Tab: View RSVP statistics and all responses
  • Edit Tab: Update event details (guests will be notified via email)
  • Share the public URL with your guests

Guest RSVP Flow

  1. Receive the event URL from the organizer
  2. View event details and submit RSVP
  3. Receive confirmation email with edit link (if email provided)
  4. Use the edit link to update response anytime

Database Schema

  • Event: Stores event details, settings, and edit token
  • CustomQuestion: Event-specific questions
  • Rsvp: Guest responses with edit tokens
  • RsvpAnswer: Answers to custom questions

API Routes

  • POST /api/events - Create new event
  • GET /api/events/[id] - Get event details
  • PUT /api/events/[id] - Update event (requires token)
  • GET /api/events/[id]/stats - Get event statistics (requires token)
  • POST /api/rsvps - Create RSVP
  • GET /api/rsvps/[id] - Get RSVP details (requires token)
  • PUT /api/rsvps/[id] - Update RSVP (requires token)
  • POST /api/upload-url - Get S3 presigned upload URL

Security

  • No authentication required: Access controlled via unique tokens
  • Edit tokens: UUID-based tokens for both events and RSVPs
  • Token validation: All edit operations require valid tokens
  • Guest limits: Enforced server-side to prevent over-booking

Deployment

Database

  1. Set up a PostgreSQL database (e.g., on Vercel Postgres, Supabase, or Railway)
  2. Update DATABASE_URL in production environment variables
  3. Run migrations: npx prisma db push

AWS S3

  1. Create an S3 bucket
  2. Configure CORS for image uploads
  3. Create IAM user with S3 upload permissions
  4. Add credentials to environment variables

Email

  1. Set up Resend account and verify domain
  2. Add API key to environment variables

Vercel Deployment

  1. Push code to GitHub
  2. Import project in Vercel
  3. Add environment variables
  4. Deploy

License

MIT

Support

For issues or questions, please open an issue on GitHub.

About

rsvp app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors