Azmog 91df66852e fix: aligne le référentiel d'émotions sur le sujet et complète le dossier
Référentiel d'émotions (conformité au sujet) :
- 6 émotions de base (suppression d'« Amour ») et 36 sous-émotions
- libellés exacts du sujet (Surprise dédupliquée : Étonnement listé 2x)
- propagation du décompte 6+36 (CLAUDE.md, plan oral, slides, dossier, mobile)

Corrections dossier (grille d'évaluation Bloc INFCDAAL1) :
- ajout d'un sommaire
- contraintes budget 75 000 EUR et délai 12 mois (chiffres du sujet)
- table des parties prenantes et de leur communication (§4.1)
- mockup du module Informations (les 3 modules ont désormais une maquette)
- cardinalités du MCD agrandies et lisibles
- chiffrement reformulé honnêtement (bcrypt aujourd'hui, AES-256 prévu en prod HDS)
- dossier maintenu à 20 pages (limite respectée)

Vérifs : backend 15 tests, mobile tsc 0, seeder 6+36.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 20:27:33 +02:00
2026-03-11 16:28:56 +01:00

🧠 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 & cache
  • recharts — graphiques et visualisations
  • next-themes — dark mode
  • lucide-react — icônes
  • react-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 :

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 Email Mot de passe
Administrateur admin@cesizen.fr Admin123!

📦 Modules

  1. Comptes utilisateurs — inscription, connexion, profil, admin CRUD, suppression RGPD
  2. Informations — pages de contenu (CMS), CRUD admin
  3. Tracker d'émotions — journal émotionnel, saisies avec intensité, rapports graphiques (camembert, courbes, barres)

📄 Licence

Projet académique — CESI École d'Ingénieurs © 2026

S
Description
No description provided
Readme 3.7 MiB
Languages
TypeScript 42.3%
Python 28.9%
PHP 16.5%
Blade 10.7%
Makefile 0.6%
Other 1%