Application web privée de Secret Santa construite avec Laravel 11, Blade et Alpine.js.
- ✅ Pas de comptes utilisateur - Accès direct pour l'admin
- ✅ Accès basé sur tokens - Chaque participant reçoit un token unique
- ✅ Gestion des exclusions - Les participants peuvent exclure d'autres personnes
- ✅ Assignations cryptées - L'admin ne peut jamais voir les assignations
- ✅ Notifications email - Les participants reçoivent un email avec leur lien unique
- ✅ UI en français - Interface entièrement en français
- ✅ Architecture propre - Code organisé avec services et tests
-
Installer les dépendances
composer install npm install
-
Configurer l'environnement
cp .env.example .env php artisan key:generate
-
Configurer la base de données
- Modifier
.envavec vos paramètres de base de données - Par défaut, SQLite est utilisé :
database/database.sqlite
- Modifier
-
Lancer les migrations
php artisan migrate
-
Compiler les assets (pour la production)
npm run build
Ou en mode développement :
npm run dev
Dans votre fichier .env, configurez l'envoi d'emails :
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@example.com
MAIL_FROM_NAME="Secret Santa"Pour le développement local, vous pouvez utiliser MAIL_MAILER=log pour voir les emails dans storage/logs/laravel.log.
-
Créer un événement
- Aller sur la page d'accueil
- Cliquer sur "Nouvel événement"
- Remplir les informations (nom, description, date)
-
Ajouter des participants
- Sur la page de l'événement, ajouter les participants avec leur nom et email
- Chaque participant reçoit automatiquement un token unique
-
Définir les exclusions (optionnel)
- Pour chaque participant, cliquer sur "Gérer exclusions"
- Sélectionner les personnes à exclure
-
Générer les assignations
- Une fois qu'il y a au moins 3 participants, le bouton "Générer les assignations" apparaît
- Les assignations sont générées de manière aléatoire en respectant les exclusions
- Les emails sont envoyés automatiquement à tous les participants
-
Accès participant
- Chaque participant reçoit un email avec un lien unique
- Le lien contient leur token :
/participant/{token} - Ils peuvent voir à qui ils doivent offrir un cadeau
- Les assignations sont cryptées dans la base de données
- L'admin ne peut jamais voir les assignations
- Chaque participant a un token unique de 64 caractères
- Les assignations ne peuvent être générées qu'une seule fois par événement
Lancer les tests :
php artisan testapp/
├── Http/Controllers/
│ ├── AssignmentController.php # Génération des assignations
│ ├── EventController.php # Gestion des événements
│ ├── ParticipantController.php # Gestion des participants/exclusions
│ └── ParticipantAccessController.php # Accès token-based
├── Models/
│ ├── Assignment.php # Assignations cryptées
│ ├── Event.php # Événements
│ ├── Exclusion.php # Exclusions
│ └── Participant.php # Participants avec tokens
├── Notifications/
│ └── SecretSantaAssignmentNotification.php # Email aux participants
└── Services/
└── AssignmentService.php # Algorithme de matching
- Laravel 11 - Framework PHP
- Blade - Moteur de templates
- Alpine.js - JavaScript réactif
- Tailwind CSS - Framework CSS
- SQLite - Base de données (par défaut)
- Le minimum de participants requis est 3
- Les assignations sont générées avec un algorithme de backtracking qui respecte les exclusions
- Si les exclusions rendent le matching impossible, une erreur est affichée
- Les participants peuvent consulter leur assignation autant de fois qu'ils le souhaitent