initial commit
This commit is contained in:
100
docs/prd/epic-1-foundation-core-entities.md
Normal file
100
docs/prd/epic-1-foundation-core-entities.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# 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)
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user