From 9e853a5f805c77afb90c32b9bfc6259006964eea Mon Sep 17 00:00:00 2001 From: Azmog <80716388+AzmogEx@users.noreply.github.com> Date: Wed, 11 Mar 2026 16:28:56 +0100 Subject: [PATCH] docs: ajout du README.md --- README.md | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5a7b508 --- /dev/null +++ b/README.md @@ -0,0 +1,191 @@ +# 🧠 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](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