La partie backend est réalisée avec Laravel 9 comme demandé dans le document de test technique.
Il s'agit d'une API RESTful permet de gérer des projets et leurs tâches associées. Elle offre des fonctionnalités complètes de CRUD, pagination, filtrage et validation.
Pour la partie frontend, une application React est disponible dans un dépôt séparé. ici : https://github.com/maximilien-regnier/test-clubfunding-frontend Consultez le README de ce dépôt pour les instructions d'installation et d'utilisation.
- Docker et Docker Compose
- Git
- Composer
- PHP
- Cloner le dépôt
git clone git@github.com:maximilien-regnier/test-clubfunding-api.git
cd test-clubfunding-api- Installer les dépendances avec Laravel Sail
docker run --rm \
-u "$(id -u):$(id -g)" \
-v $(pwd):/var/www/html \
-w /var/www/html \
laravelsail/php83-composer:latest \
composer install- Configurer les variables d'environnement
Si utilisation avec Docker + Laravel Sail alors il suffit de copier le fichier .env.example en .env
cp .env.example .env- Démarrer les conteneurs Docker
./vendor/bin/sail up -d- Générer la clé d'application
./vendor/bin/sail artisan key:generate- Exécuter les migrations et les seeders
./vendor/bin/sail artisan migrate --seedLes seeders permettent d'avoir déjà quelques projets et tâches dans la base de données.
Exécuter les tests PHPUnit:
./vendor/bin/sail artisan testGET /api/projects- Liste des projets (avec pagination et filtrage)POST /api/projects- Créer un nouveau projetGET /api/projects/{id}- Détails d'un projetPUT /api/projects/{id}- Modifier un projetDELETE /api/projects/{id}- Supprimer un projetGET /api/projects/{id}/tasks- Tâches d'un projet spécifique
GET /api/tasks- Liste des tâches (avec pagination et filtrage)POST /api/tasks- Créer une nouvelle tâcheGET /api/tasks/{id}- Détails d'une tâchePUT /api/tasks/{id}- Modifier une tâcheDELETE /api/tasks/{id}- Supprimer une tâche
name- Recherche par nom (insensible à la casse)created_from- Projets créés à partir de cette datecreated_to- Projets créés jusqu'à cette datesort_by- Tri par:id,name,created_at,updated_atsort_order- Ordre:asc,descper_page- Éléments par page (1-100)page- Numéro de page
status- Filtrer par statut:pending,completedproject_id- Filtrer par projettitle- Recherche par titre (insensible à la casse)created_from- Tâches créées à partir de cette datecreated_to- Tâches créées jusqu'à cette datesort_by- Tri par:id,title,status,created_at,updated_atsort_order- Ordre:asc,descper_page- Éléments par page (1-100)page- Numéro de page
Un frontend React est disponible dans un dépôt séparé. Consultez le README de ce dépôt pour les instructions d'installation et d'utilisation.
Une commande est planifiée pour s'exécuter quotidiennement à 9h00 et envoyer des rappels pour les tâches en attente depuis plus de 7 jours:
./vendor/bin/sail artisan tasks:send-overdue-remindersPour tester manuellement cette commande:
./vendor/bin/sail artisan tasks:send-overdue-reminders