🚀 Documentation Teadle
📋 Vue d'ensemble
Teadle est une plateforme de mise en relation entre formateurs et organisations. Elle permet aux formateurs de gérer leur planning, candidater à des opportunités et facturer leurs interventions, tandis que les organisations peuvent publier des missions et gérer leurs formateurs.
🎯 Fonctionnalités principales
- 🔐 Authentification sécurisée : Cookies httpOnly, JWT, OAuth (LinkedIn, Google, Microsoft), codes d'authentification
- 👥 Profils distincts : Formateurs et Organisations avec interfaces dédiées
- 📋 Onboarding intelligent : Parcours guidé avec reprise possible
- 💼 Gestion des opportunités : Publication, candidature, matching
- 📅 Planning avancé : Calendrier interactif, événements, interventions
- 💰 Facturation : Génération automatique des factures
- 📧 Notifications : Emails automatisés via Brevo
- 📊 Bilan mensuel : Rapport automatique envoyé aux formateurs le 1er du mois (Symfony Scheduler + Messenger async)
🛠️ Technologies
Frontend
- Vue.js 3 - Framework principal avec Composition API
- Pinia - Gestion d'état centralisée
- Vue Router 4 - Navigation et guards
- Axios - Client HTTP
- Tailwind CSS - Framework CSS utilitaire
- Vite - Build tool et dev server
Backend
- Symfony 7.3 - Framework PHP
- API Platform 3.2 - API REST automatique
- Doctrine ORM 3.3 - Mapping objet-relationnel
- PostgreSQL - Base de données
- Symfony Messenger - Traitement asynchrone (emails, bilan mensuel)
- Symfony Scheduler - Planification des tâches récurrentes (bilan mensuel)
- JWT + Cookies httpOnly - Authentification sécurisée
- OAuth 2.0 - Authentification tierce
Monitoring & Observabilité
- Sentry - Capture d'erreurs et performance monitoring (backend Symfony + frontend Vue.js, 2 projets séparés)
- New Relic - APM et monitoring infra (agent PHP, région EU
collector.eu01.nr-data.net)
Infrastructure
- Docker & Docker Compose - Containerisation
- Nginx - Serveur web
- Redis - Cache et sessions
- Brevo - Service d'envoi d'emails
🐳 Docker
Le projet utilise Docker pour l'environnement de développement et de production.
Services Docker
# compose.yaml
services:
frontend: # Vue.js dev server
backend: # Symfony + API Platform
database: # PostgreSQL
redis: # Cache et sessions
nginx: # Reverse proxy
Variables d'environnement
# Base de données
DATABASE_URL=postgresql://teadle:password@database:5432/teadle
# Sécurité
APP_SECRET=your-secret-key
JWT_SECRET_KEY=path/to/private.key
JWT_PUBLIC_KEY=path/to/public.key
# OAuth
LINKEDIN_CLIENT_ID=your-linkedin-client-id
GOOGLE_CLIENT_ID=your-google-client-id
MICROSOFT_CLIENT_ID=your-microsoft-client-id
# Email
BREVO_SECRET=your-brevo-api-key
# Monitoring
SENTRY_DSN=https://...@....ingest.de.sentry.io/...
NEW_RELIC_LICENSE_KEY=eu01x...NRAL
NEW_RELIC_APP_NAME=Teadle
🚀 Commandes Makefile
Le projet utilise un Makefile pour simplifier les commandes de développement.
🏃♂️ Démarrage rapide
# Installer et démarrer l'environnement complet
make install
# Démarrer les services
make up
# Arrêter les services
make down
🔧 Développement
# Installer les dépendances frontend
make frontend-install
# Installer les dépendances backend
make backend-install
# Démarrer le serveur de développement frontend
make frontend-dev
# Démarrer le serveur de développement backend
make backend-dev
# Vider le cache Symfony
make backend-cache-clear
🗄️ Base de données
# Créer la base de données
make database-create
# Exécuter les migrations
make database-migrate
# Charger les fixtures
make database-fixtures
# Réinitialiser la base (drop + create + migrate + fixtures)
make database-reset
🧪 Tests
# Lancer les tests frontend
make frontend-test
# Lancer les tests backend
make backend-test
# Lancer les tests E2E
make e2e-test
Rapports de tests (CI)
Les rapports Allure sont générés automatiquement par la CI et publiés sur Cloudflare Pages :
Les tests sont regroupés par suite dans le rapport : Backend — PHPUnit et Frontend — Vitest.
🏗️ Build et déploiement
# Build de production frontend
make frontend-build
# Build de production backend
make backend-build
# Build complet
make build
Image Docker (Clever Cloud, CI) : le contexte de build est en général la racine du dépôt. Docker n’applique alors que le fichier /.dockerignore à cette racine (pas celui sous .infra/prod/). Sans lui, tout le dépôt (dont .git, dépendances locales) peut être envoyé au daemon : les étapes finales du build (exporting layers) deviennent très longues et semblent « bloquées » car elles n’affichent souvent aucun log pendant plusieurs minutes.
🧹 Maintenance
# Nettoyer les containers et volumes
make clean
# Nettoyer complètement (containers, volumes, images)
make clean-all
# Voir les logs
make logs
📚 Documentation
📁 Structure des documentations
.doc/
├── README.md # ← Ce fichier (point d'entrée)
├── frontend/ # Documentation frontend
│ ├── README.md # Vue d'ensemble frontend
│ ├── ARCHITECTURE.md # Architecture Vue.js
│ ├── WORKFLOWS.md # Flux utilisateur
│ ├── ONBOARDING_GUARD.md # Système de protection des routes
│ └── ...
└── backend/ # Documentation backend
├── README.md # Vue d'ensemble backend
├── ARCHITECTURE.md # Architecture DDD
├── API_PLATFORM.md # API Platform custom
├── DATABASE.md # Base de données
├── SECURITY.md # Sécurité et authentification
└── ...
🎯 Documentation Frontend
README.md - Vue d'ensemble
- Architecture Vue.js 3 avec Composition API
- Structure du projet et organisation des composants
- Gestion d'état avec Pinia
- Routing et navigation
ARCHITECTURE.md - Architecture détaillée
- Patterns de composants Vue.js
- Gestion d'état centralisée
- Communication entre composants
- Optimisations de performance
WORKFLOWS.md - Flux utilisateur
- Parcours d'inscription et onboarding
- Workflows métier (formateurs/organisations)
- Gestion des états et transitions
- Validation des formulaires
ONBOARDING_GUARD.md - Protection des routes
- Système de guards pour l'onboarding
- Gestion des états d'authentification
- Redirections intelligentes
- Persistance des données
🔧 Documentation Backend
README.md - Vue d'ensemble
- Architecture hexagonale (DDD)
- Technologies Symfony et API Platform
- Structure du projet
- Configuration et déploiement
ARCHITECTURE.md - Architecture DDD
- Principes Domain-Driven Design
- Couches (Domain, Application, Infrastructure)
- Patterns utilisés (Repository, Command, Value Object)
- Bounded Contexts
API_PLATFORM.md - API Platform custom
- Resources, Processors et Providers personnalisés
- Configuration des endpoints REST
- Gestion de la sécurité
- Validation et gestion d'erreurs
DATABASE.md - Base de données
- Schéma ER complet
- Entités et relations
- Migrations Doctrine
- Optimisations et index
SECURITY.md - Sécurité
- Authentification sécurisée (Cookies httpOnly, JWT, OAuth, codes)
- Autorisation et permissions
- Protection contre les attaques XSS et CSRF
- Monitoring et audit
🚀 Démarrage rapide
1. Prérequis
# Vérifier que Docker est installé
docker --version
docker-compose --version
# Vérifier que Make est disponible
make --version
2. Installation
# Cloner le projet
git clone <repository-url>
cd teadle
# Installer et démarrer l'environnement
make install
3. Accès aux services
- Frontend : http://localhost:3000
- Backend API : http://localhost:8000
- API Documentation : http://localhost:8000/api
- Base de données : localhost:5432
4. Première utilisation
# Charger les données de test
make database-fixtures
# Créer un compte de test
# Utiliser l'interface d'inscription sur http://localhost:3000
🔧 Développement
Workflow recommandé
- Démarrer l'environnement :
make up - Développer : Modifier le code dans
frontend/oubackend/ - Tester :
make frontend-testoumake backend-test - Valider :
make e2e-test - Déployer :
make build
Commandes utiles
# Voir les logs en temps réel
make logs
# Redémarrer un service spécifique
docker-compose restart backend
# Accéder au shell d'un service
docker-compose exec backend bash
docker-compose exec frontend sh
🔒 Sécurité
Authentification sécurisée
Teadle utilise une architecture d'authentification moderne et sécurisée :
🍪 Cookies httpOnly
- Protection XSS : Les tokens JWT ne sont pas accessibles en JavaScript
- Gestion automatique : Le navigateur envoie automatiquement les cookies
- Expiration automatique : Gérée par le navigateur selon les paramètres
- Secure flag : Restriction aux connexions HTTPS en production
- SameSite : Protection contre les attaques CSRF
🔐 Méthodes d'authentification
- Email/Mot de passe : Authentification classique avec cookies httpOnly
- OAuth 2.0 : LinkedIn, Google, Microsoft
- Codes d'authentification : Validation par email
- Réinitialisation de mot de passe : Processus sécurisé
🛡️ Protection contre les attaques
- XSS : Cookies httpOnly, validation des entrées
- CSRF : SameSite cookies, validation des origines
- Injection : Validation et échappement des données
- Brute force : Rate limiting, verrouillage de compte
Configuration recommandée
# Production
cookies:
secure: true # HTTPS uniquement
httpOnly: true # Pas d'accès JavaScript
sameSite: Strict # Protection CSRF
domain: .teadle.com
path: /
📞 Support
Équipe de développement
- Lead Developer - Architecture et développement
- Frontend Developer - Interface utilisateur Vue.js
- Backend Developer - API Symfony et logique métier
- DevOps Engineer - Infrastructure et déploiement
Communication
- GitHub Issues - Suivi des bugs et features
- Slack - Communication quotidienne
- Notion - Documentation et planning
Dernière mise à jour : ${new Date().toLocaleDateString('fr-FR')}
Teadle - Plateforme de mise en relation formateurs/organisations