Files
cesizen-individuel/README.md
T
AzmogExe 918416312d
CI / Backend · PHPUnit + Pint (push) Successful in 1m36s
CI / Mobile · Jest (push) Has been cancelled
CI / Frontend · ESLint + Vitest (push) Has been cancelled
Actualiser README.md
2026-09-03 16:31:49 +00:00

192 lines
5.9 KiB
Markdown

# 🧠 CESIZen
a
**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](https://www.docker.com/) & Docker Compose
- Ou bien : PHP 8.2+, Composer, Node.js 20+, PostgreSQL 16
### Avec Docker (recommandé)
```bash
# 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)
```bash
# 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