Files
rsvp-manager/README.md

145 lines
4.5 KiB
Markdown

# RSVP Manager
A modern event RSVP management system with customizable backgrounds and item coordination.
## Features
- User-friendly RSVP interface
- Comprehensive event management
- Create and manage events
- Track RSVPs and guest counts
- Set RSVP cut-off dates to automatically close registrations
- Coordinate needed items and track who's bringing what
- Customizable event backgrounds/wallpapers
- Real-time item status tracking
- See what items are still needed
- Track claimed items
- Prevent duplicate item claims
- Guest management
- Track guest attendance
- Support for bringing additional guests
- Guest names tracking
- Modern, responsive UI
- Containerized deployment
## Tech Stack
- Frontend: React with TypeScript and Material-UI
- Backend: Node.js/Express with TypeScript
- Database: SQLite
- Containerization: Docker
## Getting Started
### Prerequisites
- Docker
- Docker Compose
- Node.js (for local development)
### Installation
1. Clone the repository
2. Run `docker-compose up` to start the application
3. Access the application at `http://localhost:3000`
## Development
### Local Development Setup
1. Install dependencies:
```bash
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm install
```
2. Start the development servers:
```bash
# Start backend server
cd backend
npm run dev
# Start frontend server
cd ../frontend
npm start
```
### Key Features Explained
#### Event Creation and Management
- Create events with title, description, date, time, and location
- Set optional RSVP cut-off dates to automatically close registrations
- Upload custom wallpapers to personalize event pages
- Manage RSVPs and track attendance
#### Item Coordination
- Create a list of needed items for the event
- Attendees can claim items they'll bring
- Real-time tracking of claimed vs needed items
- Prevent duplicate item claims
- Remove items that are no longer needed
#### RSVP Management
- Track who's attending
- Support for bringing additional guests
- Keep track of guest names
- Manage what items each person is bringing
## Authentication with Authentik
This application is compatible with Authentik. Make sure to create a Proxy Provider for Forward auth (single application). To protect the admin routes, add the following configuration to your nginx config:
```nginx
# Protected routes
location ~ (/create|/admin) {
proxy_pass $forward_scheme://$server:$port;
auth_request /outpost.goauthentik.io/auth/nginx;
error_page 401 = @goauthentik_proxy_signin;
auth_request_set $auth_cookie $upstream_http_set_cookie;
add_header Set-Cookie $auth_cookie;
auth_request_set $authentik_username $upstream_http_x_authentik_username;
auth_request_set $authentik_groups $upstream_http_x_authentik_groups;
auth_request_set $authentik_email $upstream_http_x_authentik_email;
auth_request_set $authentik_name $upstream_http_x_authentik_name;
auth_request_set $authentik_uid $upstream_http_x_authentik_uid;
auth_request_set $authentik_authorization $upstream_http_authorization;
proxy_set_header X-authentik-username $authentik_username;
proxy_set_header X-authentik-groups $authentik_groups;
proxy_set_header X-authentik-email $authentik_email;
proxy_set_header X-authentik-name $authentik_name;
proxy_set_header X-authentik-uid $authentik_uid;
proxy_set_header Authorization $authentik_authorization;
}
# Authentik outpost configuration
location /outpost.goauthentik.io {
proxy_pass http://<YOUR_AUTHENTIK_URL>/outpost.goauthentik.io;
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
add_header Set-Cookie $auth_cookie;
auth_request_set $auth_cookie $upstream_http_set_cookie;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
# Authentik signin redirect
location @goauthentik_proxy_signin {
internal;
add_header Set-Cookie $auth_cookie;
return 302 /outpost.goauthentik.io/start?rd=$request_uri;
}
```
This configuration will:
- Protect the `/create` and `/admin` routes with Authentik authentication
- Redirect unauthenticated users to the Authentik login page
- Pass through Authentik user information in headers after successful authentication
- Handle the authentication flow through the Authentik outpost
- Properly manage cookies and headers for the authentication process
Note: Replace `<YOUR_AUTHENTIK_URL>` with your actual Authentik instance URL.