Organize your family's Secret Santa gift exchange with ease!
Secret Santa is a self-hosted web application that helps manage gift exchanges with features like wishlist management, assignment generation with constraints, email notifications, and assignment history tracking.
docker run -d \
-p 3000:3000 \
-v secret-santa-data:/app/data \
-e NEXTAUTH_SECRET=$(openssl rand -base64 32) \
-e ADMIN_PASSWORD=changeme123 \
ghcr.io/JR33D/secret-santa:latestVisit http://localhost:3000 and login with:
- Username:
admin - Password:
changeme123(change immediately!)
See full installation guide β
- π Wishlist Management - Create and manage gift wishlists
- π₯ Pool Organization - Separate groups (family, friends, coworkers)
- π² Smart Assignment - Automated matching with constraint support
- π« Restrictions - Prevent couples/siblings from drawing each other
- π§ Email Notifications - Automated assignment notifications
- π History Tracking - Visual history of past assignments
- π User Management - Secure authentication with role-based access
- π³ Easy Deployment - Docker support with multi-architecture builds
- Installation Guide - Setup instructions
- User Guide - How to use the application
- Docker Deployment - Production deployment
- Troubleshooting - Common issues and solutions
- Contributing Guide - How to contribute
- Development Setup - Local development environment
- Release Process - How releases work
- API Documentation - API reference
- Code of Conduct - Community standards
- Security Policy - Security and vulnerability reporting
- Changelog - Version history
- Docker and Docker Compose (recommended)
- OR Node.js 18+ and npm
-
Download configuration files
curl -O https://raw.githubusercontent.com/JR33D/secret-santa/main/docker-compose.prod.yml mv docker-compose.prod.yml docker-compose.yml curl -O https://raw.githubusercontent.com/JR33D/secret-santa/main/.env.example mv .env.example .env
-
Configure environment
# Generate secure secret echo "NEXTAUTH_SECRET=$(openssl rand -base64 32)" >> .env echo "ADMIN_PASSWORD=your_secure_password" >> .env
-
Start the application
docker-compose up -d
-
Clone the repository
git clone https://github.com/JR33D/secret-santa.git cd secret-santa -
Install dependencies
npm ci
-
Configure environment
cp .env.example .env # Edit .env with your configuration -
Start development server
npm run dev
We love contributions! Whether it's bug fixes, new features, or documentation improvements, all contributions are welcome.
- Fork the repository
- Clone your fork
- Create a feature branch:
git checkout -b feat/amazing-feature - Commit using conventional commits:
git commit -m 'feat: add amazing feature' - Push to your branch:
git push origin feat/amazing-feature - Open a Pull Request
See our Contributing Guide for detailed instructions.
Good First Issues: Check out issues tagged with "good first issue" to get started!
- π Report a bug
- β¨ Request a feature
Found a security vulnerability? Please review our Security Policy and report it responsibly. We take security seriously and will respond promptly.
- Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS
- Backend: Next.js API Routes, Node.js
- Database: SQLite
- Authentication: NextAuth.js
- Email: Nodemailer
- Testing: Jest, React Testing Library
- Deployment: Docker, Docker Compose
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Next.js - The React Framework
- UI styled with Tailwind CSS - Utility-first CSS
- Authentication via NextAuth.js - Authentication for Next.js
- Automated releases with Release Please - Automated releases
If you find this project helpful, please consider:
- β Starring the repository
- π Reporting bugs and issues
- π‘ Suggesting new features
- π Improving documentation
- π€ Contributing code
- π’ Sharing with others who might find it useful
Made with β€οΈ for easier gift exchanges