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.
-
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
- 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)
- 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
- Node.js 18+ and npm
- PostgreSQL database
- AWS account with S3 bucket
- Resend account for emails
- Clone the repository
git clone <your-repo-url>
cd rsvp- Install dependencies
npm install- Set up environment variables
Copy .env.example to .env and fill in your values:
cp .env.example .envRequired 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"- Set up the database
npx prisma generate
npx prisma db push- Run the development server
npm run devOpen http://localhost:3000 in your browser.
- Visit the home page
- 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
- Submit the form
- You'll be redirected to the event management dashboard
- Save the edit URL to manage your event later
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
- Receive the event URL from the organizer
- View event details and submit RSVP
- Receive confirmation email with edit link (if email provided)
- Use the edit link to update response anytime
- Event: Stores event details, settings, and edit token
- CustomQuestion: Event-specific questions
- Rsvp: Guest responses with edit tokens
- RsvpAnswer: Answers to custom questions
POST /api/events- Create new eventGET /api/events/[id]- Get event detailsPUT /api/events/[id]- Update event (requires token)GET /api/events/[id]/stats- Get event statistics (requires token)POST /api/rsvps- Create RSVPGET /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
- 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
- Set up a PostgreSQL database (e.g., on Vercel Postgres, Supabase, or Railway)
- Update
DATABASE_URLin production environment variables - Run migrations:
npx prisma db push
- Create an S3 bucket
- Configure CORS for image uploads
- Create IAM user with S3 upload permissions
- Add credentials to environment variables
- Set up Resend account and verify domain
- Add API key to environment variables
- Push code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
MIT
For issues or questions, please open an issue on GitHub.