hakanbudak/letsraffle-web
An online gift exchange app to organize and draw Secret Santa participants easily.
๐ Santa Draw
A modern, interactive Secret Santa gift exchange application built with Vue 3 and Vite
๐ Table of Contents
- About
- Features
- Demo
- Screenshots
- Getting Started
- Docker Deployment
- Usage
- Development
- Tech Stack
- Project Structure
- Contributing
- License
- Contact
๐ฏ About
Santa Draw is a web-based Secret Santa organizer that makes it easy to set up and manage gift exchanges for any group size. Whether it's for your office party, family gathering, or friend group, Santa Draw handles the random assignments while ensuring everyone gets a perfect match.
โจ Features
- ๐ฒ Random Assignment - Automated and fair Secret Santa matching
- ๐ฅ Group Management - Create and manage multiple Secret Santa groups
- ๐ Privacy Focused - Secure gift assignments that stay secret
- ๐ฑ Responsive Design - Works seamlessly on desktop, tablet, and mobile
- ๐จ Modern UI - Clean and intuitive user interface
- โก Fast Performance - Built with Vite for lightning-fast load times
- ๐ Multi-language Support - (if applicable)
- ๐ง Email Notifications - (if applicable)
๐ Getting Started
Prerequisites
Before you begin, ensure you have the following installed:
- Node.js (v16.0 or higher)
- npm (v8.0 or higher) or yarn (v1.22 or higher)
# Check your Node.js version
node --version
# Check your npm version
npm --versionInstallation
- Clone the repository
git clone https://github.com/yourusername/santa_draw.git
cd santa_draw- Install dependencies
npm install- Configure environment variables (if needed)
# Copy the example env file
cp .env.example .env
# Edit .env with your settings
nano .env- Start the development server
npm run dev- Open your browser
Navigate to http://localhost:5173 (or the port shown in your terminal)
๐ณ Docker Deployment
Prerequisites
- Docker (20.10 or higher)
- Docker Compose (2.0 or higher)
Quick Start with Docker
- Configure environment variables
# Create .env file if it doesn't exist
cp .env.example .env
# Edit .env with your settings
nano .env- Build and run with Docker Compose
# Build and start the container
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the container
docker-compose down- Access the application
The application will be available at http://localhost:3000
Docker Commands
# Build the image
docker-compose build
# Start in background
docker-compose up -d
# Start in foreground (see logs)
docker-compose up
# Stop containers
docker-compose down
# View logs
docker-compose logs -f
# Restart container
docker-compose restart
# Rebuild without cache
docker-compose build --no-cacheEnvironment Variables
Make sure to configure your .env file before running Docker:
# Example .env file
VITE_API_URL=https://api.example.com
# Add other environment variables as neededImportant: The .env file is already in .gitignore and will not be committed to the repository. Make sure to create and configure it before running Docker.
Production Deployment
For production deployment, you can use the same Docker setup:
# Build for production
docker-compose build
# Run in production mode
docker-compose up -dThe Docker setup uses:
- Multi-stage build for optimized image size
- Node.js 20 Alpine for minimal image size
- serve package for production-ready static file serving
๐ป Usage
Quick Start Guide
-
Create a New Draw
- Click on "New Draw" button
- Enter the event name and date
- Add participant names and email addresses
-
Generate Assignments
- Review your participant list
- Click "Generate Assignments"
- The system will randomly match participants
-
Share Results
- Each participant receives their assignment
- Results remain confidential
- Share the draw link with participants
Advanced Usage
# Run with custom port
npm run dev -- --port 3000
# Build for production
npm run build
# Preview production build
npm run preview๐ ๏ธ Development
Project Setup
# Install dependencies
npm installDevelopment Commands
# Start development server with hot-reload
npm run dev
# Build for production
npm run build
# Preview production build locally
npm run preview
# Run tests (if configured)
npm run test
# Lint and fix files
npm run lintCode Style
This project follows the Vue.js style guide and uses ESLint for code quality.
# Check code style
npm run lint
# Auto-fix issues
npm run lint:fix๐ง Tech Stack
Frontend
- Vue 3 - Progressive JavaScript Framework
- Vite - Next Generation Frontend Tooling
- JavaScript/ES6+ - Modern JavaScript
Development Tools
- Vue DevTools - Browser DevTools extension
- ESLint - Code quality tool
- Prettier - Code formatter (if configured)
Recommended IDE Setup
- VS Code with:
- Vue - Official (Volar)
- Disable Vetur if installed
Browser Extensions
Chromium-based browsers (Chrome, Edge, Brave):
Firefox:
๐ Project Structure
santa_draw/
โโโ public/ # Static assets
โโโ src/
โ โโโ assets/ # Images, styles, fonts
โ โโโ components/ # Vue components
โ โโโ views/ # Page components
โ โโโ router/ # Vue Router configuration
โ โโโ store/ # State management (if using Pinia/Vuex)
โ โโโ utils/ # Utility functions
โ โโโ App.vue # Root component
โ โโโ main.js # Application entry point
โโโ .gitignore
โโโ index.html # HTML entry point
โโโ package.json # Dependencies and scripts
โโโ vite.config.js # Vite configuration
โโโ README.md # This file
๐ค Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Development Guidelines
- Write clean, readable code
- Follow the existing code style
- Add comments for complex logic
- Test your changes thoroughly
- Update documentation as needed
๐ License
Distributed under the MIT License. See LICENSE file for more information.
๐ง Contact
Linkedin - https://www.linkedin.com/in/hakan-budak-7ab3071b5/
Project Link: https://github.com/hakanbudak/santas_draw_frontend
๐ Acknowledgments
- Vue.js - The Progressive JavaScript Framework
- Vite - Next Generation Frontend Tooling
- Font Awesome - Icon library (if used)
- All contributors who have helped this project grow!



