From 19604ea0164986b939b82642dcb66ca97f6cd500 Mon Sep 17 00:00:00 2001 From: Adam M <80716388+AzmogEx@users.noreply.github.com> Date: Wed, 11 Mar 2026 16:29:43 +0100 Subject: [PATCH] Delete CLAUDE.md --- CLAUDE.md | 204 ------------------------------------------------------ 1 file changed, 204 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 2551643..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,204 +0,0 @@ -# CESIZen — Application de santé mentale - -## Projet -Projet CESI École d'Ingénieurs — Bloc "Concevoir les solutions logicielles" (INFCDAAL1). -Plateforme web de gestion du stress et suivi émotionnel pour le Ministère des Solidarités et de la Santé. - -## Stack technique -- **Backend** : Laravel 11 (PHP 8.2+) — API REST, architecture MVC -- **Frontend** : Next.js 14 (React + TypeScript + Tailwind CSS) — App Router, `src/` dir -- **BDD** : PostgreSQL 16 (via Docker) -- **Auth** : JWT (`tymon/jwt-auth`) -- **Dépendances frontend** : axios, zustand, @tanstack/react-query, recharts, next-themes, lucide-react, react-hot-toast - -## Charte graphique -- Couleur principale : `#fce117` (Candlelight / jaune) — Tailwind: `candlelight-*` -- Couleur secondaire : `#06c656` (Malachite / vert) — Tailwind: `malachite-*` -- Couleur tertiaire : `#000000` (noir) -- Polices : Inter (body, `font-sans`), Poppins (titres, `font-display`) -- Dark mode supporté (next-themes, class strategy) -- Mobile-first, RGAA accessible - -## Modules implémentés -1. **Comptes utilisateurs** (obligatoire) — inscription, profil, admin CRUD, reset password -2. **Informations** (obligatoire) — pages de contenu CMS, CRUD admin -3. **Tracker d'émotions** (au choix) — journal émotionnel, saisies, rapports graphiques - -## État d'avancement - -### FAIT (backend) -- Projet Laravel initialisé avec JWT configuré -- Config auth.php : guard `api` avec driver `jwt`, provider `utilisateurs` (modèle Utilisateur) -- Config cors.php : frontend localhost:3000 autorisé -- 10 migrations créées (roles, utilisateurs, emotions, trackers, saisie_trackers, feeds, contacts_urgence, audits, cache, sessions) -- 8 modèles Eloquent (Role, Utilisateur avec JWTSubject, Emotion, Tracker, SaisieTracker, Feed, ContactUrgence, Audit) -- 5 seeders (RoleSeeder, AdminSeeder admin@cesizen.fr/Admin123!, EmotionSeeder 7 émotions + sous-émotions, FeedSeeder 4 articles) -- 3 middleware (JwtMiddleware, RoleMiddleware, ForceJsonResponse) -- 5 Form Requests (RegisterRequest, LoginRequest, UpdateProfilRequest, StoreSaisieRequest, StoreFeedRequest) -- 8 controllers (AuthController, ProfilController, FeedController, EmotionController, SaisieTrackerController, + 3 Admin) -- RapportService (stats émotions par période week/month/quarter/year) -- Routes API v1 complètes dans routes/api.php -- bootstrap/app.php configuré avec middleware alias et routing API - -### FAIT (frontend) -- Projet Next.js 14 initialisé avec Tailwind, TypeScript, App Router -- tailwind.config.ts avec couleurs candlelight/malachite + polices Inter/Poppins -- globals.css avec import Google Fonts + variables CSS dark/light -- layout.tsx avec providers (ThemeProvider, QueryClientProvider, Toaster) -- Providers.tsx (composant client wrapper) -- .env.local avec NEXT_PUBLIC_API_URL -- src/lib/api.ts (client Axios avec intercepteurs JWT) -- src/lib/auth-store.ts (store Zustand avec persist) -- src/types/index.ts (interfaces TypeScript complètes) -- 5 hooks (useAuth, useFeeds, useTracker, useRapport, useEmotions) -- 7 composants UI (Button, Input, Card, Modal, Badge, Slider, Skeleton, ThemeToggle) -- 3 composants layout (Header, Footer, Sidebar) -- Page d'accueil (landing page avec hero, features, CTA) -- Page /connexion (formulaire login) -- Page /inscription (formulaire register avec consentement RGPD) - -### À FAIRE (prioritaire) -- **Lancer Docker PostgreSQL** (`docker compose up -d`) — Docker n'était pas démarré -- **Migrer la BDD** (`cd backend && php artisan migrate --seed`) -- **Tester l'API** (`php artisan serve` puis tester login/register) -- Pages frontend manquantes : - - `(public)/informations/page.tsx` — liste des articles - - `(public)/informations/[slug]/page.tsx` — détail article - - `(protected)/dashboard/page.tsx` — tableau de bord utilisateur - - `(protected)/profil/page.tsx` — page profil - - `(protected)/journal/page.tsx` — journal d'émotions (timeline) - - `(protected)/journal/nouvelle-saisie/page.tsx` — formulaire saisie multi-étapes - - `(protected)/journal/rapports/page.tsx` — graphiques recharts - - `(admin)/admin/dashboard/page.tsx` — dashboard admin - - `(admin)/admin/utilisateurs/page.tsx` — gestion utilisateurs - - `(admin)/admin/contenus/page.tsx` — gestion contenus - - `(admin)/admin/emotions/page.tsx` — gestion émotions -- Layout protégé avec sidebar pour les pages (protected) et (admin) -- Middleware Next.js pour protéger les routes auth -- Composants features (EmotionPicker, EmotionChart, TrackerTimeline) - -### À FAIRE (bonus) -- EncryptionService AES-256 pour chiffrer les notes en BDD -- AuditMiddleware pour logger les actions admin -- Page mot de passe oublié (forgot/reset password) -- Export données utilisateur (RGPD droit d'accès) -- Tests PHPUnit backend -- Responsive fine-tuning mobile - -## Structure du projet -``` -Cesizen/ -├── backend/ # Laravel 11 API -│ ├── app/Models/ # Eloquent : Utilisateur, Role, Tracker, SaisieTracker, Emotion, Feed, Audit, ContactUrgence -│ ├── app/Http/Controllers/ -│ │ ├── AuthController.php -│ │ ├── ProfilController.php -│ │ ├── FeedController.php -│ │ ├── EmotionController.php -│ │ ├── SaisieTrackerController.php -│ │ └── Admin/ # AdminUtilisateurController, AdminFeedController, AdminEmotionController -│ ├── app/Services/ # RapportService (stats émotions) -│ ├── app/Http/Middleware/ # JwtMiddleware, RoleMiddleware, ForceJsonResponse -│ ├── app/Http/Requests/ # RegisterRequest, LoginRequest, StoreSaisieRequest, StoreFeedRequest, UpdateProfilRequest -│ ├── database/migrations/ # 10 fichiers migration -│ ├── database/seeders/ # RoleSeeder, AdminSeeder, EmotionSeeder, FeedSeeder -│ ├── bootstrap/app.php # Configuré avec middleware alias jwt.auth + role -│ ├── config/auth.php # Guard api/jwt, provider utilisateurs -│ ├── config/cors.php # CORS frontend localhost:3000 -│ └── routes/api.php # Toutes les routes API v1 -├── frontend/ # Next.js 14 -│ ├── src/app/ -│ │ ├── layout.tsx # Layout racine avec Providers -│ │ ├── page.tsx # Landing page (FAIT) -│ │ ├── (auth)/connexion/page.tsx # FAIT -│ │ ├── (auth)/inscription/page.tsx # FAIT -│ │ ├── (public)/informations/ # À FAIRE -│ │ ├── (protected)/dashboard/ # À FAIRE -│ │ ├── (protected)/profil/ # À FAIRE -│ │ ├── (protected)/journal/ # À FAIRE -│ │ └── (admin)/admin/ # À FAIRE -│ ├── src/components/ -│ │ ├── Providers.tsx # Client providers wrapper (FAIT) -│ │ ├── ui/ # Button, Input, Card, Modal, Badge, Slider, Skeleton, ThemeToggle (FAIT) -│ │ ├── layout/ # Header, Footer, Sidebar (FAIT) -│ │ └── features/ # À CRÉER (EmotionPicker, EmotionChart, TrackerTimeline) -│ ├── src/lib/ -│ │ ├── api.ts # Client Axios (FAIT) -│ │ └── auth-store.ts # Store Zustand (FAIT) -│ ├── src/hooks/ # useAuth, useFeeds, useTracker, useRapport, useEmotions (FAIT) -│ └── src/types/index.ts # Interfaces TypeScript (FAIT) -├── docker-compose.yml # PostgreSQL 16 -└── .gitignore -``` - -## API Endpoints (préfixe `/api/v1`) - -### Auth (public) -- `POST /auth/register` — Inscription -- `POST /auth/login` — Connexion (retourne JWT) — rate limited 5/min -- `POST /auth/logout` — Déconnexion (auth) -- `GET /auth/me` — Profil courant (auth) -- `POST /auth/refresh` — Rafraîchir token (auth) - -### Profil (auth membre) -- `GET /profil` / `PUT /profil` — Lire/modifier profil -- `PUT /profil/password` — Changer mot de passe -- `DELETE /profil` — Supprimer compte (RGPD) - -### Informations (public) -- `GET /feeds` — Liste pages publiées -- `GET /feeds/{slug}` — Détail page - -### Tracker (auth membre) -- `GET /tracker/saisies` — Mes saisies (filtres: date_debut, date_fin, emotion_id) -- `POST /tracker/saisies` — Nouvelle saisie -- `PUT /tracker/saisies/{id}` — Modifier saisie -- `DELETE /tracker/saisies/{id}` — Supprimer saisie -- `GET /tracker/rapports?period=week|month|quarter|year` — Rapport statistique - -### Émotions (auth membre) -- `GET /emotions` — Liste arborescente (niveau 1 + sous-émotions niveau 2) - -### Admin (auth admin) -- `GET/POST/PUT/DELETE /admin/utilisateurs` — CRUD utilisateurs -- `PATCH /admin/utilisateurs/{id}/toggle-active` — Activer/désactiver -- `GET/POST/PUT/DELETE /admin/feeds` — CRUD contenus -- `GET/POST/PUT/DELETE /admin/emotions` — CRUD émotions - -## Base de données (tables) -1. `roles` — id, nom (visiteur/membre/administrateur), description -2. `utilisateurs` — id, nom, prenom, email, password (bcrypt), role_id, est_actif, consentement_rgpd, soft delete -3. `emotions` — id, nom, couleur, icone, niveau (1 ou 2), parent_id (auto-ref), est_actif -4. `trackers` — id, utilisateur_id, nom -5. `saisie_trackers` — id, tracker_id, emotion_id, intensite (1-10), note, date_saisie -6. `feeds` — id, titre, slug, contenu (HTML), image_url, est_publie, auteur_id, ordre -7. `contacts_urgence` — id, utilisateur_id, nom, telephone, relation -8. `audits` — id, utilisateur_id, action, table_cible, anciennes_valeurs, nouvelles_valeurs, ip_address - -## Comptes de test -- **Admin** : admin@cesizen.fr / Admin123! - -## Commandes utiles -```bash -# BDD -docker compose up -d # Démarrer PostgreSQL - -# Backend -cd backend -php artisan migrate --seed # Créer les tables et données de test -php artisan serve # API sur localhost:8000 - -# Frontend -cd frontend -npm run dev # App sur localhost:3000 -``` - -## Conventions -- Parler toujours en français dans les commits et commentaires -- API versionnée `/api/v1/` -- Nommage des tables/colonnes en snake_case français -- Composants React en PascalCase -- Routes frontend en français (connexion, inscription, journal, etc.) -- Icônes : lucide-react -- Notifications : react-hot-toast -- State management : zustand (auth), @tanstack/react-query (data fetching)