Skip to content

Latest commit

Β 

History

353 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Youth Secure Check-in

License: MIT Python 3.10+ Flask 3.1

AI Transparency Notice: This software was developed with AI assistance as a productivity augmentation tool. AI was used for code suggestions, documentation improvements, and architectural planning assistance. All AI-generated content was reviewed, tested, and approved by human developers before inclusion.

A secure, flexible check-in/check-out system for youth organizations including Trail Life, scouting groups, churches, schools, and community programs. Features family management, event tracking, QR code checkout, label printing, and comprehensive security controls.

Check-in Interface

🌟 Key Features

βœ… Check-in Management

  • Quick Check-in: Fast family lookup by phone number (last 4 digits)
  • Event Selection: Auto-populated from iCal feeds or manual entry
  • Kid Selection: Multi-kid check-in with one tap
  • Status Tracking: Real-time check-in/check-out status with timestamps
  • History View: Complete check-in history with filtering

πŸ”’ Security & Access Control

  • Multiple Authentication Levels: App password, admin override, developer password
  • Checkout Codes: QR codes or printed labels for secure pickup
  • Authorized Adults: Track who can pick up each child
  • Developer Password: Backup access via environment variable
  • Session Security: Encrypted session management
  • Password Hashing: PBKDF2-SHA256 hashing with strong password requirements
  • Rate Limiting: Max 5 login attempts per minute per IP address
  • Account Lockout: 15-minute lockout after 5 failed attempts
  • Encrypted Database: SQLCipher AES-256 encryption at rest
  • Field-Level Encryption: Sensitive data encrypted with Fernet
  • Searchable Name Hashes: Partial name search without decryption (tokenized SHA-256)

πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ Family Management

  • Family Records: Store families with adults and children
  • Improved Data Entry: Clear, intuitive Add/Edit Family pages with helpful examples and context
  • Group Assignment: Organize by troop/den/class/group
  • CSV Import/Export: Bulk import families, export for backup
  • Flexible Import: Supports multiple CSV column name variations
  • Notes Field: Track allergies, special needs, emergency info

🎨 Customizable Branding

  • Organization Details: Name, type, group terminology
  • Color Schemes: Primary, secondary, and accent colors
  • Logo Upload: PNG, JPG, or SVG logos (auto-sized)
  • Favicon Support: Custom browser tab icons
  • Setup Wizard: First-run configuration guide
  • Dark Mode: Toggle between light and dark themes (persisted in browser)

🎫 Checkout Methods

Two Strict Modes (choose one per event):

  • Random 5-Digit Codes: System generates unique codes during check-in
    • Delivered via QR code (scan with phone) or printed labels
    • Dual Mode: Support both QR and labels simultaneously
    • Custom Labels: Three-line configurable text with family/event info
  • Phone-Based Codes: Uses last 4 digits of phone number as code
    • No generation needed, fast checkout
    • Simple and efficient for smaller groups

πŸ“Š Event Management

  • iCal Import: Auto-import from Google Calendar, Outlook, etc.
  • Manual Entry: Create, edit, and delete events directly in the system
  • Bulk Operations: Clear all events with one click
  • Date Range Control: Configurable event dropdown (Β±1 to Β±12 months)
  • Event History: Track attendance across events

πŸ’Ύ Backup & Restore

  • AES-256 Encrypted Backups: Protect sensitive child data with built-in encryption
  • Scheduled Backups: Automatic hourly, daily, weekly, or monthly backups
  • Email Delivery: Automatically email backups to configured recipients
  • Configuration Export: JSON backup of all settings
  • Configuration Import: Restore settings from backup
  • Family Export: CSV export of all family data
  • History Export: CSV export of all check-in/check-out records
  • Disaster Recovery: Complete backup/restore workflow

πŸš€ Quick Start

⚠️ Encryption Required (v1.0.2+)

All instances now require encryption keys. New deployments include them automatically. Existing users upgrading from v1.0.0 or v1.0.1: Migration is automatic on startup - just add encryption keys to .env! See DOCKER_ENCRYPTION_MIGRATION.md for details.

Docker Deployment (Recommended)

Deploy in 30 seconds with Docker:

# Create a directory and required folders
mkdir youth-checkin && cd youth-checkin
mkdir -p data uploads

# Download docker-compose.yml
curl -O https://raw.githubusercontent.com/mrcrunchybeans/youth-secure-checkin/master/docker-compose.yml

# Create .env file with your secrets AND encryption keys
cat > .env << EOF
SECRET_KEY=$(openssl rand -hex 32)
DEVELOPER_PASSWORD=your-secure-password
DB_ENCRYPTION_KEY=$(openssl rand -hex 32)
FIELD_ENCRYPTION_KEY=$(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")
EOF

# Start the application
docker compose up -d

# Verify it's running
docker compose logs

# Access at http://localhost:5000

Note: Use docker compose (with space), not docker-compose (with hyphen).

Quick Reference: See DOCKER_ENCRYPTION_QUICK_REF.md for common commands.

Try the Demo:

docker compose --profile demo up -d

# Demo login: demo123 / demo2025
# Test families: Phone numbers 555-0101 through 555-0108

See DOCKER.md for complete deployment guide.

Manual Installation

For development or custom deployments:

  1. Prerequisites: Python 3.10+, pip, Git

  2. Clone and setup

    git clone https://github.com/mrcrunchybeans/youth-secure-checkin.git
    cd youth-secure-checkin
    python -m venv venv
    venv\Scripts\activate  # Windows
    # source venv/bin/activate  # Linux/Mac
    pip install -r requirements.txt
  3. Configure

    cp .env.example .env
    # Edit .env and set SECRET_KEY and DEVELOPER_PASSWORD
  4. Initialize and run

    python -c "from app import init_db; init_db()"
    python app.py
    # Open http://localhost:5000

Complete first-time setup wizard, then start checking in families!

πŸ“– Documentation

🎯 Use Cases

This system is perfect for:

  • Trail Life USA troops and outposts
  • Scouting organizations (BSA, Girl Scouts, etc.)
  • Churches (children's ministry, youth groups)
  • Schools (after-school programs, clubs)
  • Community centers (sports teams, activities)
  • Childcare facilities (daycare, preschool)
  • Any organization tracking youth attendance

πŸ”§ Configuration

First-Time Setup Wizard

On first run, you'll complete a 4-step setup wizard:

  1. Organization Details: Name, type, group terminology
  2. Color Scheme: Primary, secondary, accent colors
  3. Access Code: Set the main login password
  4. Event Settings: Configure event date range

Admin Panel

Access comprehensive settings at /admin:

  • Families: Add, edit, import, export family records
  • Events: Import from iCal or create manually
  • Security: Access codes, checkout codes, label settings
  • Branding: Logo, favicon, colors, organization details
  • Backup & Restore: Export/import configuration

πŸ“Έ Screenshots

Click to collapse screenshots

Kiosk & Check-in Experience

Main Kiosk Family Selection
Kiosk Interface Family Selection
QR Code Checkout Secure Checkout
QR Code Checkout Code

Admin Dashboard & Management

Admin Dashboard Event Management
Admin Panel Events
Family Management Edit Family Details
Families Edit Family

Customization & Reporting

Branding Settings Attendance History
Branding History

πŸ› οΈ Technology Stack

  • Backend: Flask 3.0 (Python web framework)
  • Database: SQLite (embedded, zero-config)
  • Frontend: Bootstrap 5.3 + vanilla JavaScript
  • QR Codes: qrcode library with Pillow
  • Label Printing: Brother QL series support
  • Calendar Import: icalendar + pytz
  • CSV Processing: Native Python csv module

πŸ“‹ Requirements

See requirements.txt for full dependency list:

  • Flask==3.1.1
  • icalendar==6.1.0
  • requests==2.32.4
  • qrcode==8.0
  • Pillow==11.0.0
  • python-dotenv==1.0.1
  • gunicorn==23.0.0 (for production)
  • cryptography==41.0.7 (encryption)
  • pysqlcipher3==1.2.0 (database encryption)

🐳 Deployment Options

Docker (Recommended)

Pull pre-built images from Docker Hub:

# Always specify the profile!
docker compose up -d

See DOCKER.md for complete guide.

VPS / Cloud Server

  • DigitalOcean, Linode, Vultr: Ubuntu + Docker
  • AWS, Google Cloud, Azure: Container services
  • SSL: Use Caddy or Cloudflare Tunnel for automatic HTTPS

See DEPLOYMENT_CHECKLIST.md for hosting guides.

Platform as a Service

  • Railway: Docker support with automatic SSL
  • Render: Docker deploy from GitHub
  • Fly.io: Global edge deployment
  • Heroku: Use included Procfile

🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Built for Trail Life WI-4603, adapted for universal use
  • Bootstrap for the responsive UI framework
  • Flask community for excellent documentation
  • All contributors and users providing feedback

πŸ’¬ Support

πŸ” Security

For security concerns, please see SECURITY.md or open a private security advisory on GitHub.


Made with ❀️ for youth organizations everywhere

About

A secure, flexible check-in/check-out system for youth organizations including Trail Life, scouting groups, churches, schools, and community programs. Features family management, event tracking, QR code checkout, label printing, and comprehensive security controls.

Topics

Resources

Contributing

Security policy

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages