19604ea0164986b939b82642dcb66ca97f6cd500
🧠 CESIZen
Plateforme web de gestion du stress et suivi émotionnel
Projet réalisé dans le cadre du bloc « Concevoir les solutions logicielles » (INFCDAAL1) — CESI École d'Ingénieurs, pour le Ministère des Solidarités et de la Santé.
📋 Présentation
CESIZen est une application web permettant aux utilisateurs de :
- Suivre leurs émotions au quotidien via un tracker émotionnel
- Visualiser leurs tendances grâce à des graphiques et rapports statistiques
- Consulter des ressources d'information sur la santé mentale
- Gérer leur profil avec respect du RGPD (droit de suppression)
L'application propose également un espace administrateur pour gérer les utilisateurs, les contenus et les émotions.
🛠 Stack technique
| Couche | Technologie |
|---|---|
| Backend | Laravel 11 (PHP 8.2+) — API REST |
| Frontend | Next.js 14 (React, TypeScript, Tailwind CSS) — App Router |
| Base de données | PostgreSQL 16 |
| Authentification | JWT (tymon/jwt-auth) |
| Conteneurisation | Docker & Docker Compose |
Dépendances frontend notables
zustand— gestion d'état (authentification)@tanstack/react-query— data fetching & cacherecharts— graphiques et visualisationsnext-themes— dark modelucide-react— icônesreact-hot-toast— notifications
🚀 Installation & Lancement
Prérequis
- Docker & Docker Compose
- Ou bien : PHP 8.2+, Composer, Node.js 20+, PostgreSQL 16
Avec Docker (recommandé)
# Cloner le projet
git clone https://github.com/AzmogEx/CesiZen.git
cd CesiZen
# Lancer les 3 services (PostgreSQL, backend, frontend)
docker compose up -d
L'application sera accessible sur :
- Frontend : http://localhost:3000
- API Backend : http://localhost:8000
Sans Docker (développement local)
# 1. Base de données PostgreSQL
# Créer une base "cesizen" sur votre instance PostgreSQL locale
# 2. Backend
cd backend
cp .env.example .env
# Configurer les variables DB_* dans .env
composer install
php artisan key:generate
php artisan jwt:secret
php artisan migrate --seed
php artisan serve # → http://localhost:8000
# 3. Frontend
cd frontend
cp .env.local.example .env.local
# Vérifier NEXT_PUBLIC_API_URL=http://localhost:8000/api/v1
npm install
npm run dev # → http://localhost:3000
📁 Structure du projet
CesiZen/
├── backend/ # API Laravel 11
│ ├── app/
│ │ ├── Http/
│ │ │ ├── Controllers/ # 8 controllers (Auth, Profil, Feed, Emotion, Tracker, 3 Admin)
│ │ │ ├── Middleware/ # JWT, Role, ForceJsonResponse
│ │ │ └── Requests/ # 5 Form Requests avec validation
│ │ ├── Models/ # 8 modèles Eloquent
│ │ └── Services/ # RapportService (statistiques)
│ ├── database/
│ │ ├── migrations/ # 10 migrations
│ │ └── seeders/ # Rôles, admin, émotions, articles
│ └── routes/api.php # Routes API v1
│
├── frontend/ # App Next.js 14
│ └── src/
│ ├── app/ # Pages (App Router)
│ │ ├── (auth)/ # Connexion, inscription
│ │ ├── (protected)/ # Dashboard, journal, profil, rapports
│ │ ├── (admin)/ # Admin (utilisateurs, contenus, émotions)
│ │ └── informations/ # Pages d'information publiques
│ ├── components/ # Composants UI & layout
│ ├── hooks/ # Hooks React (auth, feeds, tracker, émotions)
│ ├── lib/ # Client API (Axios), store Zustand
│ └── types/ # Interfaces TypeScript
│
└── docker-compose.yml # Orchestration des 3 services
🔌 API Endpoints
Préfixe : /api/v1
Publiques
| Méthode | Route | Description |
|---|---|---|
POST |
/auth/register |
Inscription |
POST |
/auth/login |
Connexion (retourne JWT) |
GET |
/feeds |
Liste des articles publiés |
GET |
/feeds/{slug} |
Détail d'un article |
Authentifiées (membre)
| Méthode | Route | Description |
|---|---|---|
GET |
/auth/me |
Profil courant |
POST |
/auth/logout |
Déconnexion |
GET/PUT |
/profil |
Lire / modifier profil |
PUT |
/profil/password |
Changer mot de passe |
DELETE |
/profil |
Supprimer compte (RGPD) |
GET |
/emotions |
Liste des émotions |
GET/POST |
/tracker/saisies |
Lister / créer une saisie |
PUT/DELETE |
/tracker/saisies/{id} |
Modifier / supprimer une saisie |
GET |
/tracker/rapports |
Rapport statistique |
Administration
| Méthode | Route | Description |
|---|---|---|
CRUD |
/admin/utilisateurs |
Gestion des utilisateurs |
CRUD |
/admin/feeds |
Gestion des contenus |
CRUD |
/admin/emotions |
Gestion des émotions |
🎨 Charte graphique
| Élément | Valeur |
|---|---|
| Couleur principale | #fce117 (Candlelight — jaune) |
| Couleur secondaire | #06c656 (Malachite — vert) |
| Couleur tertiaire | #000000 (noir) |
| Police body | Inter |
| Police titres | Poppins |
| Dark mode | ✅ Supporté |
| Responsive | ✅ Mobile-first |
👤 Comptes de test
| Rôle | Mot de passe | |
|---|---|---|
| Administrateur | admin@cesizen.fr |
Admin123! |
📦 Modules
- Comptes utilisateurs — inscription, connexion, profil, admin CRUD, suppression RGPD
- Informations — pages de contenu (CMS), CRUD admin
- Tracker d'émotions — journal émotionnel, saisies avec intensité, rapports graphiques (camembert, courbes, barres)
📄 Licence
Projet académique — CESI École d'Ingénieurs © 2026
Description
Languages
TypeScript
42.3%
Python
28.9%
PHP
16.5%
Blade
10.7%
Makefile
0.6%
Other
1%