A unified event management solution combining ticketing and check-in systems
This repository integrates two powerful open-source event management systems:
- Eventyay Tickets (Django-based ticketing system)
- Eventyay Check-in (Vue.js-based check-in application)
This integration builds upon the excellent work of:
- Original Repository: fossasia/eventyay-tickets
- Created by: FOSSASIA
- Description: A comprehensive event ticketing and management system based on Pretix
- License: Apache License 2.0
- Original Repository: fossasia/open-event-checkin
- Created by: FOSSASIA
- Description: A modern Vue.js-based check-in application for events
- License: Apache License 2.0
Special Thanks: To the entire FOSSASIA community and all contributors who made these amazing systems possible. This integration simply brings them together for easier deployment and unified management.
A unified event management platform combining Eventyay Tickets (Django backend) and Eventyay Check-in (Vue.js frontend) for complete event ticketing and attendee management.
The integrated system consists of:
- Eventyay Tickets: Django-based backend for ticket sales, event management, and API services
- Eventyay Check-in: Vue.js frontend for attendee check-in, QR code scanning, and badge generation
- PostgreSQL: Database for persistent data storage
- Redis: Caching and session management
- Nginx: Reverse proxy for unified access
Before setting up Eventyay on macOS, ensure you have the following installed:
-
Docker Desktop for Mac
# Download from: https://www.docker.com/products/docker-desktop/ # Or install via Homebrew: brew install --cask docker
-
Node.js (v18 or higher)
# Install via Homebrew: brew install node # Or download from: https://nodejs.org/ # Verify installation: node --version npm --version
-
Python 3.11+
# Install via Homebrew: brew install python@3.11 # Or use pyenv for version management: brew install pyenv pyenv install 3.11.0 pyenv global 3.11.0 # Verify installation: python3 --version pip3 --version
-
Git
# Usually pre-installed on macOS, or install via Homebrew: brew install git
-
Homebrew (Package manager for macOS):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
PostgreSQL (for local development without Docker):
brew install postgresql@15 brew services start postgresql@15
-
Clone and Setup:
git clone <repository-url> cd eventyay-integrated chmod +x setup.sh ./setup.sh
-
Start the System:
./start.sh
-
Access the Applications:
- Tickets Admin: http://localhost:8000/control/
- Check-in App: http://localhost:8080/
- API: http://localhost:8000/api/v1/
-
Setup for Development:
chmod +x dev-setup.sh ./dev-setup.sh
-
Start Development Servers:
# Start both services in separate terminals: ./start-dev.sh # Or start individually: ./start-backend.sh # Django backend on port 8000 ./start-frontend.sh # Vue.js frontend on port 8080
- Email:
admin@eventyay.com
- Password:
admin123
If you're new to development or this is your first time setting up Eventyay, follow this detailed guide:
-
Open Terminal:
- Press
Cmd + Space
, type "Terminal", and press Enter - Or go to Applications > Utilities > Terminal
- Press
-
Install Xcode Command Line Tools (if not already installed):
xcode-select --install
- Click "Install" when prompted
- This provides essential development tools
-
Install Homebrew (macOS package manager):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Follow the on-screen instructions
- Add Homebrew to your PATH when prompted
-
Install Docker Desktop:
brew install --cask docker
- Or download from: https://www.docker.com/products/docker-desktop/
- Important: Open Docker Desktop app and complete setup
- Wait for Docker to start (whale icon in menu bar should be steady)
-
Install Node.js:
brew install node
- Verify:
node --version
(should show v18 or higher)
- Verify:
-
Install Python:
brew install python@3.11
- Verify:
python3 --version
(should show 3.11 or higher)
- Verify:
-
Install Git (usually pre-installed):
git --version # If not installed: brew install git
-
Navigate to your desired directory:
cd ~/Desktop # or wherever you want to install
-
Clone the repository (replace with actual repo URL):
git clone <repository-url> cd eventyay-integrated
-
Make setup scripts executable:
chmod +x setup.sh dev-setup.sh start.sh stop.sh check-system.sh
-
Run system check (recommended for first-time users):
./check-system.sh
- This will verify all prerequisites are installed
- Follow any recommendations in the output
- If you see errors, fix them before proceeding
For Beginners (Recommended): Use Docker setup
./setup.sh
For Developers: Use local development setup
./dev-setup.sh
Docker Setup:
./start.sh
Development Setup:
./start-dev.sh
-
Wait for services to start (may take 2-5 minutes first time)
-
Test the applications:
- Open http://localhost:8000/control/ in your browser
- Login with:
admin@eventyay.com
/admin123
- Open http://localhost:8080/ in another tab
-
If something doesn't work:
- Check the troubleshooting section below
- Look at terminal output for error messages
- Ensure Docker Desktop is running
- β Best for: Production-like environment, beginners
- β Includes: PostgreSQL database, Redis cache, Nginx proxy
- β Pros: Complete environment, matches production
- β Cons: Slower startup, requires more resources
- β Best for: Active development, faster iteration
- β Includes: SQLite database, direct server access
- β Pros: Fast startup, easy debugging, hot reloading
- β Cons: Different from production environment
-
Create your first event:
- Go to http://localhost:8000/control/
- Navigate to "Events" > "Create Event"
- Fill in event details
-
Set up check-in:
- In your event, go to "Check-in" settings
- Create check-in lists
- Configure badge templates
-
Test the check-in app:
- Open http://localhost:8080/
- Follow the device registration process
- Test scanning QR codes
eventyay-integrated/
βββ eventyay-tickets/ # Django backend (API, admin)
βββ eventyay-checkin/ # Vue.js frontend (mobile app)
βββ docker-compose.yml # Docker configuration
βββ nginx.conf # Reverse proxy config
βββ setup.sh # Docker setup script
βββ dev-setup.sh # Development setup script
βββ start.sh # Start Docker services
βββ stop.sh # Stop Docker services
βββ README.md # This file
Problem: "Docker daemon not running"
# Solution: Start Docker Desktop
open -a Docker
# Wait for Docker to start, then retry
Problem: "Port already in use"
# Check what's using the port
lsof -i :8000 # or :8080, :5432, :6379
# Kill the process if needed
kill -9 <PID>
Problem: "Python command not found" or version issues
# Check Python installation
which python3
python3 --version
# If using pyenv, ensure it's in your PATH
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
Problem: "ImportError: attempted relative import with no known parent package"
# This is usually fixed by our setup, but if it persists:
cd eventyay-tickets/src
export DJANGO_SETTINGS_MODULE=settings
python manage.py runserver 8000
Problem: "Database migration errors"
# Reset database (development only)
cd eventyay-tickets
rm -rf data/db.sqlite3
source venv/bin/activate
cd src
python manage.py migrate
python manage.py createsuperuser
Problem: "npm command not found"
# Reinstall Node.js
brew uninstall node
brew install node
# Or use nvm for version management
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.zshrc
nvm install 18
nvm use 18
Problem: "EACCES permissions errors"
# Fix npm permissions
sudo chown -R $(whoami) ~/.npm
# Or use a Node version manager like nvm
Problem: "Module not found" errors
# Clear npm cache and reinstall
cd eventyay-checkin
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
Problem: "Permission denied" when running scripts
# Make scripts executable
chmod +x setup.sh dev-setup.sh start.sh stop.sh
chmod +x start-*.sh
Problem: "Cannot create directory" errors
# Check and fix directory permissions
sudo chown -R $(whoami) /Users/$(whoami)/Desktop/event
chmod -R 755 /Users/$(whoami)/Desktop/event
Problem: "Connection refused" or "Network unreachable"
# Check if macOS firewall is blocking connections
# System Preferences > Security & Privacy > Firewall
# Allow incoming connections for Docker, Python, and Node.js
# Test local connectivity
curl http://localhost:8000/api/v1/
curl http://localhost:8080/
Problem: "System running slowly" or "Out of memory"
# Increase Docker memory allocation
# Docker Desktop > Settings > Resources > Memory (recommend 4GB+)
# Monitor resource usage
top -o cpu
# Or use Activity Monitor app
If you encounter issues not covered here:
-
Check the logs:
# Docker logs docker-compose logs tickets docker-compose logs checkin # Development logs # Check terminal output where services are running
-
Verify system requirements:
# Run our comprehensive system check ./check-system.sh # Manual checks (if needed) docker --version docker-compose --version node --version npm --version python3 --version pip3 --version
-
Clean restart:
# Stop everything ./stop.sh docker-compose down -v # Clean Docker docker system prune -f # Restart ./start.sh
- Use SSD storage for better Docker performance
- Allocate sufficient RAM to Docker Desktop (4GB+ recommended)
- Enable file sharing optimization in Docker Desktop settings
- Use local development setup (
./dev-setup.sh
) for faster iteration - Close unnecessary applications to free up system resources
Technology Stack:
- Django 5.1 with Django REST Framework
- PostgreSQL database
- Redis for caching
- Celery for background tasks
- OAuth2 authentication
Key Features:
- Event creation and management
- Ticket sales and order processing
- Check-in list management
- API endpoints for mobile apps
- Multi-organizer support
- Payment processing integration
- Reporting and analytics
API Endpoints:
/api/v1/organizers/
- Organizer management/api/v1/organizers/{org}/events/
- Event management/api/v1/organizers/{org}/events/{event}/checkinlists/
- Check-in lists/api/v1/organizers/{org}/events/{event}/orders/
- Order management/api/v1/organizers/{org}/checkin/redeem/
- Check-in processing
Technology Stack:
- Vue.js 3 with Composition API
- Vite for build tooling
- Pinia for state management
- Tailwind CSS for styling
- QR code scanning capabilities
Key Features:
- QR code scanning for ticket validation
- Real-time attendee check-in
- Badge generation and printing
- Offline capability
- Multi-device support
- Event selection and management
- Statistics and reporting
-
Backend Development (Tickets):
cd eventyay-tickets source venv/bin/activate cd src python manage.py runserver 8000
-
Frontend Development (Check-in):
cd eventyay-checkin npm run dev
-
Database Operations:
# Run migrations docker-compose exec tickets python manage.py migrate # Create superuser docker-compose exec tickets python manage.py createsuperuser # Access database docker-compose exec postgres psql -U eventyay -d eventyay
eventyay-integrated/
βββ eventyay-tickets/ # Django backend
β βββ src/pretix/ # Main application code
β βββ pyproject.toml # Python dependencies
β βββ Dockerfile # Backend container
βββ eventyay-checkin/ # Vue.js frontend
β βββ src/ # Frontend source code
β βββ package.json # Node.js dependencies
β βββ Dockerfile # Frontend container
βββ docker-compose.yml # Service orchestration
βββ nginx.conf # Reverse proxy config
βββ setup.sh # Setup script
βββ start.sh # Startup script
βββ stop.sh # Shutdown script
The check-in app communicates with the tickets backend through REST API:
- Authentication: OAuth2 tokens or device authentication
- Event Data: Fetches events and check-in lists
- Check-in Process: Validates tickets and records attendance
- Real-time Updates: WebSocket connections for live updates
- Event Creation: Admin creates events in tickets backend
- Check-in Setup: Configure check-in lists and permissions
- Device Registration: Register check-in devices via QR codes
- Attendee Check-in: Scan tickets using check-in app
- Badge Generation: Generate and print attendee badges
- Reporting: View statistics and reports in both systems
Tickets Backend:
DATABASE_URL=postgresql://eventyay:eventyay@postgres:5432/eventyay
REDIS_URL=redis://redis:6379/0
PRETIX_URL=http://localhost:8000
PRETIX_CURRENCY=USD
DEBUG=true
Check-in Frontend:
VITE_PROD_API_URL=http://localhost:8000/api/v1
VITE_TEST_API_URL=http://localhost:8000/api/v1
VITE_LOCAL_PORT=8080
- postgres: PostgreSQL database (port 5432)
- redis: Redis cache (port 6379)
- tickets: Django backend (port 8000)
- checkin: Vue.js frontend (port 8080)
- nginx: Reverse proxy (port 80)
- Access Admin Panel: http://localhost:8000/control/
- Create Organization: Set up your organization
- Create Event: Add event details, dates, and settings
- Add Ticket Types: Configure different ticket categories
- Create Check-in Lists: Set up check-in points and rules
- Generate Device QR: Create QR codes for check-in devices
- Access Check-in App: http://localhost:8080/
- Device Authentication: Scan device QR code
- Select Event: Choose the event to manage
- Scan Tickets: Use camera to scan attendee QR codes
- Generate Badges: Create and print attendee badges
- View Statistics: Monitor check-in progress
- API Authentication: OAuth2 and token-based authentication
- CORS Configuration: Properly configured cross-origin requests
- CSRF Protection: Django CSRF middleware enabled
- SSL/TLS: HTTPS support for production deployments
- Device Management: Secure device registration and management
- Backend Health: http://localhost:8000/healthcheck/
- Database Status: PostgreSQL connection monitoring
- Cache Status: Redis connection monitoring
# View all logs
docker-compose logs -f
# View specific service logs
docker-compose logs -f tickets
docker-compose logs -f checkin
-
Configure Environment Variables:
- Set production database credentials
- Configure Redis connection
- Set proper CORS origins
- Enable SSL/TLS
-
Security Hardening:
- Use strong passwords
- Enable HTTPS
- Configure firewall rules
- Set up monitoring
-
Scaling Considerations:
- Use managed database services
- Implement load balancing
- Set up CDN for static files
- Configure auto-scaling
- Fork the repositories
- Create feature branches
- Make changes with tests
- Submit pull requests
- Follow coding standards
This project is licensed under the Apache License 2.0. See the LICENSE files in each repository for details.
# System check (run first)
./check-system.sh
# Docker setup (production-like)
./setup.sh
./start.sh
./stop.sh
# Development setup (faster)
./dev-setup.sh
./start-dev.sh
# Individual services
./start-backend.sh # Django on :8000
./start-frontend.sh # Vue.js on :8080
- π« Admin Panel: http://localhost:8000/control/
- π± Check-in App: http://localhost:8080/
- π§ API Docs: http://localhost:8000/api/v1/
- π Health Check: http://localhost:8000/healthcheck/
- Email:
admin@eventyay.com
- Password:
admin123
eventyay-integrated/
βββ π« eventyay-tickets/ # Django backend
βββ π± eventyay-checkin/ # Vue.js frontend
βββ π³ docker-compose.yml # Docker orchestration
βββ π nginx.conf # Reverse proxy
βββ βοΈ setup.sh # Production setup
βββ π§ dev-setup.sh # Development setup
βββ π check-system.sh # System verification
βββ π README.md # This documentation
# Docker not working?
open -a Docker # Start Docker Desktop
# Port conflicts?
lsof -i :8000 # Check what's using port 8000
kill -9 <PID> # Kill the process
# Permission errors?
chmod +x *.sh # Make scripts executable
# Clean restart?
./stop.sh && docker system prune -f && ./start.sh
# Development issues?
cd eventyay-tickets && source venv/bin/activate
cd eventyay-checkin && npm install
- Check logs: Look at terminal output where services are running
- Run system check:
./check-system.sh
- Read troubleshooting: See macOS Troubleshooting section above
- Clean restart: Stop everything, clean Docker, restart
- Check GitHub issues: Look for similar problems in the repository
- Documentation: Check the docs/ directories in each repository
- Issues: Report bugs in the respective GitHub repositories
- Community: Join the FOSSASIA community channels
- Commercial Support: Available through eventyay.com
- FOSSASIA and the Eventyay Team for creating the original ticketing system
- FOSSASIA and the Open Event Community for developing the check-in application
- All original contributors to both eventyay-tickets and open-event-checkin repositories
- Contributors who helped create this integration
- Open Source Community for the underlying technologies (Django, Vue.js, PostgreSQL, Redis, Docker)
- Pretix: Original ticketing system that Eventyay Tickets is based on
- Vue.js Community: For the excellent frontend framework
- Django Community: For the robust backend framework
Suggested Repository Name: eventyay-unite
Alternative Names:
eventyay-integrated
eventyay-platform
eventyay-complete
eventyay-unified
The name "Unite" reflects the integration of both systems while maintaining the Eventyay brand identity.
Happy Event Management! πͺ