Plateforme web de suivi de challenges étudiants et de gestion d'événements pédagogiques (bootcamps, ateliers, sessions) avec validation des candidatures, publication de contenus, interactions sociales et administration complète.
- Aperçu
- Fonctionnalités principales
- Stack technique
- Architecture
- Captures d'écran
- Installation locale
- Configuration
- Lancement en développement
- Base de données
- Comptes et rôles
- Routes principales
- Sécurité et permissions
- Structure du projet
- Qualité et tests
- Roadmap
- Licence
Komita est une application full-stack Laravel + React (Inertia) conçue pour:
- permettre aux étudiants de créer et documenter leurs challenges quotidiens,
- permettre aux professeurs de créer des événements, filtrer les candidatures et publier des éléments de programme,
- offrir une dimension communautaire (commentaires, suivi d'étudiants, notifications),
- donner à l'administration une vision globale et des actions de modération.
Le projet est orienté usage réel: workflow par rôle, restrictions d'accès fines, historique d'activité, et expérience UI moderne.
- Authentification Laravel Breeze (register/login/logout).
- Rôles applicatifs:
studentprofessoradmin
- Profil utilisateur enrichi:
- nom/prénom,
- spécialité,
- contact,
- réseaux sociaux (LinkedIn/GitHub/Instagram).
- Page profil publique utilisateur (
/users/{user}), consultable depuis les feeds et pages détaillées.
- Admin: redirection automatique vers
/admin. - Professeur:
- vue de ses événements,
- stats de soumissions,
- pilotage des candidatures.
- Étudiant:
- vue de ses challenges,
- progression,
- section événements déjà démarrés auxquels il a été accepté.
- Création de challenge par étudiant.
- Date de début prise en compte avant toute activité.
- Rapports journaliers avec logique de progression.
- Commentaires communautaires.
- Corrections par professeur/admin.
- Réponses du propriétaire du challenge sur les corrections.
- Follow/unfollow d'étudiants avec notifications associées.
- Création d'événements (professeur/admin).
- Planning:
- jour unique,
- ou période multi-jours (bootcamp).
- Date limite de candidature avec précision temporelle.
- Candidature unique par utilisateur à un événement.
- Workflow de review côté prof/admin:
- accepter,
- décliner,
- retirer.
- Démarrage de l'événement après fermeture des candidatures.
- Accès au contenu réservé aux participants acceptés (et gestionnaires).
- Publication d'éléments de programme.
- Pièces jointes de contenu:
- jusqu'à 10 fichiers par élément de programme,
- téléchargement sécurisé.
- Feed global challenges + événements.
- Recherche par mot-clé.
- Liens directs vers détails (challenge, événement, profils).
- Centre de notifications avec marquage lu.
- Notifications sur les actions importantes:
- création challenge,
- rapport challenge,
- correction/commentaire,
- candidatures événements,
- review de soumission,
- démarrage événement,
- activités suivies.
- Panel administrateur complet.
- Gestion utilisateurs:
- mise à jour infos,
- changement de rôle,
- blocage/déblocage,
- suppression.
- Gestion contenus:
- suppression challenge,
- suppression événement.
- Vue détaillée d'un utilisateur avec historique consolidé.
- PHP
^8.2 - Laravel
^12 - Inertia Laravel
^2 - Sanctum
- Ziggy
- React
^18 - Inertia React
^2 - Vite
^6 - Tailwind CSS
- Framer Motion
- Heroicons
- i18next + react-i18next
- react-hot-toast
- Migrations Laravel (MySQL recommandé en local dans ce projet).
flowchart LR
U[Utilisateur] -->|HTTP| L[Laravel 12]
L --> R[Routes + Middleware]
R --> C[Controllers]
C --> M[Models Eloquent]
M --> DB[(MySQL)]
C --> I[Inertia]
I --> FE[React Pages]
FE --> UI[Tailwind UI]
C --> FS[Storage public]
authverifiednot_blockedadmin
Voici un petit aperçu :
- PHP 8.2+
- Composer
- Node.js 18+ et npm
- MySQL (ou autre SGBD compatible Laravel)
# 1) Cloner
git clone https://github.com/FulbertDev-AI/komita.git
cd komita
# 2) Dépendances PHP/JS
composer install
npm install
# 3) Variables d'environnement
cp .env.example .env
php artisan key:generate
# 4) Configurer la DB dans .env puis migrer
php artisan migrate
# 5) Lancer les assets
npm run dev
# 6) Lancer le serveur Laravel (autre terminal)
php artisan serveApplication disponible par défaut sur:
- Backend:
http://127.0.0.1:8000 - Frontend Vite:
http://127.0.0.1:5173
php artisan serve
npm run devcomposer run devCette commande lance serveur, queue listener, logs et Vite en parallèle.
Migrations déjà prévues pour:
- utilisateurs et rôles,
- challenges, rapports, commentaires, corrections,
- événements, soumissions, éléments de programme,
- fichiers attachés aux éléments d'événement,
- notifications applicatives,
- système de follow,
- blocage utilisateur.
Commandes utiles:
php artisan migrate
php artisan migrate:status
php artisan migrate:fresh --seedRôles fonctionnels:
student: crée des challenges, soumet des rapports, postule aux événements.professor: crée/pilote des événements, valide les soumissions, publie du contenu.admin: supervision globale, modération, gestion utilisateurs et contenus.
Pour promouvoir un utilisateur admin (exemple):
php artisan tinker$user = App\Models\User::where('email', 'admin@example.com')->first();
$user->role = 'admin';
$user->save();GET /GET /events/{code}
- Dashboard:
GET /dashboard - Home:
GET /home - Profil:
/profile - Notifications:
/notifications
GET /challenges/createPOST /challengesGET /challenges/{id}GET|POST /challenges/{id}/reportPOST /challenges/{id}/commentsPOST /challenges/{id}/correctionsPOST /challenges/{id}/corrections/{correction}/reply
GET /events/createPOST /eventsPOST /events/{code}/submitDELETE /events/{code}/submissionPATCH /events/{code}/submissions/{submission}PATCH /events/{code}/startPOST /events/{code}/elementsGET /events/{code}/elements/{element}/files/{file}
GET /adminPATCH /admin/users/{user}PATCH /admin/users/{user}/rolePATCH /admin/users/{user}/blockDELETE /admin/users/{user}DELETE /admin/events/{event}DELETE /admin/challenges/{challenge}
- Contrôle d'accès basé rôle + ownership.
- Blocage utilisateur centralisé via middleware.
- Téléchargement de fichiers sous contrôle serveur (pas d'accès public direct non autorisé).
- Validation stricte des payloads (
FormRequest/validate).
app/
Http/
Controllers/
Middleware/
Requests/
Models/
resources/
js/
Components/
Pages/
routes/
web.php
database/
migrations/
docs/
images/
./vendor/bin/pintphp artisan testnpm run build- Export PDF des bilans challenge/événement.
- Dashboard analytics avancé (charts + cohortes).
- Notifications temps réel (WebSockets).
- Pagination/virtualisation pour gros volumes admin.
- Suite de tests E2E (Cypress/Playwright).
Projet basé sur Laravel (MIT).




