# Epic 1: Foundation & Core Entities **Goal:** Établir les fondations du projet (setup, Docker, Prisma, CI/CD) et implémenter le CRUD complet pour les entités de base : Serveurs, Comptes et Personnages. À la fin de cet epic, l'utilisateur peut créer, consulter, modifier et supprimer des serveurs, comptes et personnages. ## Story 1.1: Project Setup & Infrastructure **As a** developer, **I want** a fully configured TanStack Start project with Docker and GitLab CI, **so that** I can start development with a working local environment and deployment pipeline. **Acceptance Criteria:** 1. TanStack Start project initialized with TypeScript strict mode 2. Docker Compose configuration with app service and PostgreSQL 16 3. Prisma configured and connected to PostgreSQL 4. shadcn/ui installed with base components (Button, Input, Card, Table) 5. ESLint + Prettier configured with recommended rules 6. GitLab CI pipeline: build, lint, test stages 7. Dockerfile multi-stage pour production build 8. README avec instructions de setup local 9. Application démarre et affiche une page d'accueil "Dofus Manager" ## Story 1.2: Database Schema - Core Entities **As a** developer, **I want** a Prisma schema with Server, Account, and Character models, **so that** the data structure is defined and migrations are ready. **Acceptance Criteria:** 1. Model `Server`: id, name, createdAt, updatedAt 2. Model `Account`: id, name, ogrines (integer), createdAt, updatedAt 3. Model `Character`: id, name, class (enum 17 classes), level (1-200), serverId (FK), accountId (FK), createdAt, updatedAt 4. Enum `CharacterClass` avec les 17 classes Dofus 5. Relations définies : Character → Server (N:1), Character → Account (N:1) 6. Migration initiale générée et appliquée 7. Seed script avec données de test (2 serveurs, 3 comptes, 10 personnages) ## Story 1.3: Server CRUD **As a** user, **I want** to manage servers (create, view, edit, delete), **so that** I can add the Dofus servers I play on. **Acceptance Criteria:** 1. Page `/servers` affiche la liste des serveurs en tableau 2. Bouton "Ajouter" ouvre un formulaire modal de création 3. Formulaire avec champ nom (requis, unique) 4. Actions Edit/Delete sur chaque ligne (icônes au hover) 5. Confirmation avant suppression 6. Toast de confirmation après chaque action 7. Validation : nom non vide, unicité vérifiée côté serveur 8. Serveurs triés par nom alphabétique ## Story 1.4: Account CRUD **As a** user, **I want** to manage my Dofus accounts (create, view, edit, delete), **so that** I can organize my characters by account. **Acceptance Criteria:** 1. Page `/accounts` affiche la liste des comptes en tableau (nom, ogrines, nb personnages) 2. Bouton "Ajouter" ouvre un formulaire modal de création 3. Formulaire avec champs : nom (requis), ogrines (optionnel, défaut 0) 4. Actions Edit/Delete sur chaque ligne 5. Clic sur un compte navigue vers `/accounts/:id` (fiche détail) 6. Page détail affiche infos compte + liste des personnages associés 7. Suppression compte impossible si personnages associés (message d'erreur) 8. Toast de confirmation après chaque action ## Story 1.5: Character CRUD **As a** user, **I want** to manage my characters (create, view, edit, delete), **so that** I can track all my Dofus characters. **Acceptance Criteria:** 1. Page `/characters` affiche la liste des personnages en tableau (nom, classe, niveau, serveur, compte) 2. Bouton "Ajouter" ouvre un formulaire modal de création 3. Formulaire avec champs : nom (requis), classe (select), niveau (1-200), serveur (select), compte (select) 4. Actions Edit/Delete sur chaque ligne 5. Clic sur un personnage navigue vers `/characters/:id` (fiche détail) 6. Page détail affiche toutes les infos du personnage 7. Icônes de classe affichées (optionnel: images ou emojis) 8. Tableau paginé (20 items par page) 9. Toast de confirmation après chaque action ## Story 1.6: Navigation & Layout **As a** user, **I want** a consistent navigation layout, **so that** I can easily move between sections of the app. **Acceptance Criteria:** 1. Sidebar de navigation avec liens : Dashboard, Personnages, Comptes, Serveurs 2. Layout responsive : sidebar collapse sur mobile 3. Breadcrumb sur les pages de détail 4. Page active mise en évidence dans la sidebar 5. Header avec titre de l'application 6. Dark mode toggle (état persisté en localStorage) ---