From f9b1d43c8111bd683eb21298c23f56e7e1cb3dfd Mon Sep 17 00:00:00 2001 From: gilles soulier Date: Tue, 27 Jan 2026 20:43:47 +0100 Subject: [PATCH] Initial commit --- .editorconfig | 0 .env.example | 0 .gitignore | 0 CLAUDE.md | 37 +++++++++++ CODEX.md | 37 +++++++++++ LICENSE | 0 Makefile | 0 PROJECT_CONTEXT.md | 30 +++++++++ README.md | 33 ++++++++++ a-lire.md | 66 +++++++++++++++++++ backend/CONTEXT.md | 49 ++++++++++++++ backend/Dockerfile | 0 contracts/data_model.md | 24 +++++++ contracts/errors.md | 24 +++++++ contracts/import/examples/import_full.json | 0 contracts/import/examples/import_min.json | 0 contracts/import/import.schema.json | 28 ++++++++ contracts/openapi.yaml | 0 contracts/pagination.md | 24 +++++++ docker-compose.yml | 0 docs/API.md | 42 ++++++++++++ docs/ARCHITECTURE.md | 64 +++++++++++++++++++ docs/DEPLOYMENT.md | 34 ++++++++++ docs/OPERATIONS.md | 38 +++++++++++ docs/PR_CHECKLIST.md | 16 +++++ docs/SECURITY.md | 40 ++++++++++++ docs/STYLEGUIDE.md | 34 ++++++++++ docs/WORKFLOW.md | 62 ++++++++++++++++++ docs/adr/0001-exemple.md | 24 +++++++ docs/adr/TEMPLATE.md | 35 ++++++++++ frontend/CONTEXT.md | 45 +++++++++++++ frontend/Dockerfile | 0 outils_dev_pref.md | 74 ++++++++++++++++++++++ product/BACKLOG.md | 35 ++++++++++ product/RELEASE_NOTES.md | 21 ++++++ product/ROADMAP.md | 22 +++++++ product/VISION.md | 35 ++++++++++ scripts/db/backup.sh | 0 scripts/db/restore.sh | 0 scripts/dev.sh | 0 scripts/fmt.sh | 0 scripts/lint.sh | 0 scripts/test.sh | 0 tasks/001-exemple.md | 42 ++++++++++++ tasks/TEMPLATE.md | 51 +++++++++++++++ 45 files changed, 1066 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 CODEX.md create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 PROJECT_CONTEXT.md create mode 100644 README.md create mode 100644 a-lire.md create mode 100644 backend/CONTEXT.md create mode 100644 backend/Dockerfile create mode 100644 contracts/data_model.md create mode 100644 contracts/errors.md create mode 100644 contracts/import/examples/import_full.json create mode 100644 contracts/import/examples/import_min.json create mode 100644 contracts/import/import.schema.json create mode 100644 contracts/openapi.yaml create mode 100644 contracts/pagination.md create mode 100644 docker-compose.yml create mode 100644 docs/API.md create mode 100644 docs/ARCHITECTURE.md create mode 100644 docs/DEPLOYMENT.md create mode 100644 docs/OPERATIONS.md create mode 100644 docs/PR_CHECKLIST.md create mode 100644 docs/SECURITY.md create mode 100644 docs/STYLEGUIDE.md create mode 100644 docs/WORKFLOW.md create mode 100644 docs/adr/0001-exemple.md create mode 100644 docs/adr/TEMPLATE.md create mode 100644 frontend/CONTEXT.md create mode 100644 frontend/Dockerfile create mode 100644 outils_dev_pref.md create mode 100644 product/BACKLOG.md create mode 100644 product/RELEASE_NOTES.md create mode 100644 product/ROADMAP.md create mode 100644 product/VISION.md create mode 100755 scripts/db/backup.sh create mode 100755 scripts/db/restore.sh create mode 100755 scripts/dev.sh create mode 100755 scripts/fmt.sh create mode 100755 scripts/lint.sh create mode 100755 scripts/test.sh create mode 100644 tasks/001-exemple.md create mode 100644 tasks/TEMPLATE.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e69de29 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e69de29 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..08eac03 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,37 @@ +# Consignes strictes — Claude Code + +Ces consignes sont obligatoires pour toute intervention avec Claude Code. + +--- + +## 1. Lecture préalable obligatoire +- Lire `a-lire.md`, `PROJECT_CONTEXT.md`, `outils_dev_pref.md`. +- Lire `docs/ARCHITECTURE.md` avant toute décision technique. + +## 2. Gestion des zones +- Ne jamais supprimer ``. +- Ajouter un exemple guidant avec la mention "a supprimer". +- Utiliser `` pour les choix techniques. + +## 3. Documentation avant code +- Aucun code tant que `product/VISION.md` et `product/BACKLOG.md` ne sont pas complétés. +- Toute décision structurante → ajouter un ADR dans `docs/adr/`. + +## 4. Style d’écriture +- Français uniquement. +- Éviter les acronymes seuls : toujours expliquer (ex: "MFA = authentification multi‑facteurs"). +- Commentaires courts et utiles. + +## 5. Découpage des tâches +- Toute tâche doit être dans `tasks/`. +- Une tâche = un objectif clair + critères d’acceptation. +- Mentionner les fichiers autorisés. + +## 6. Qualité +- Indiquer les tests attendus même si non exécutés. +- Mettre à jour la documentation impactée. + +--- + +## Exemple (a supprimer) +- "Ajouter ADR-0002 pour le choix de base de données." diff --git a/CODEX.md b/CODEX.md new file mode 100644 index 0000000..2a2191e --- /dev/null +++ b/CODEX.md @@ -0,0 +1,37 @@ +# Consignes strictes — Codex + +Ces consignes sont obligatoires pour toute intervention avec Codex. + +--- + +## 1. Lecture préalable obligatoire +- Lire `a-lire.md`, `PROJECT_CONTEXT.md`, `outils_dev_pref.md`. +- Lire `docs/ARCHITECTURE.md` avant toute décision technique. + +## 2. Gestion des zones +- Ne jamais supprimer ``. +- Ajouter un exemple guidant avec la mention "a supprimer". +- Utiliser `` pour les choix techniques. + +## 3. Documentation avant code +- Aucun code tant que `product/VISION.md` et `product/BACKLOG.md` ne sont pas complétés. +- Toute décision structurante → ajouter un ADR dans `docs/adr/`. + +## 4. Style d’écriture +- Français uniquement. +- Éviter les acronymes seuls : toujours expliquer (ex: "JWT = jeton d’authentification"). +- Commentaires courts et utiles. + +## 5. Découpage des tâches +- Toute tâche doit être dans `tasks/`. +- Une tâche = un objectif clair + critères d’acceptation. +- Mentionner les fichiers autorisés. + +## 6. Qualité +- Indiquer les tests attendus même si non exécutés. +- Mettre à jour la documentation impactée. + +--- + +## Exemple (a supprimer) +- "Créer `TASK-002` pour l’intégration de l’authentification." diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e69de29 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e69de29 diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md new file mode 100644 index 0000000..b74e7ea --- /dev/null +++ b/PROJECT_CONTEXT.md @@ -0,0 +1,30 @@ +# Contexte projet + +Ce fichier est la source de vérité sur le contexte global du projet. +Il sert aux agents pour comprendre les objectifs et les contraintes. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé architecture / dev. + +--- + +## Résumé +- But du projet : (exemple: réduire les erreurs d'inventaire — a supprimer) +- Résultat attendu : (exemple: tableau de bord + alertes — a supprimer) + +## Parties prenantes +- Décideur : (exemple: Directeur des opérations — a supprimer) +- Utilisateurs finaux : (exemple: équipe logistique — a supprimer) + +## Contraintes +- Budget / délai : (exemple: 3 mois / 20k€ — a supprimer) +- Légalité / conformité : (exemple: RGPD — a supprimer) +- Tech imposée : (exemple: PostgreSQL — a supprimer) + +## Références +- Vision : `product/VISION.md` +- Architecture : `docs/ARCHITECTURE.md` +- Backlog : `product/BACKLOG.md` diff --git a/README.md b/README.md new file mode 100644 index 0000000..bab1258 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# + +Résumé court : (exemple: à personnaliser — a supprimer) + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé architecture / dev. + +--- + +## Objectif +- Problème : (exemple: suivi manuel sur tableur — a supprimer) +- Public cible : (exemple: PME logistique — a supprimer) + +## Démarrage rapide +- Prérequis : +- Lancer en local : + +## Documentation +- Contexte : `PROJECT_CONTEXT.md` +- Vision : `product/VISION.md` +- Architecture : `docs/ARCHITECTURE.md` +- Backlog : `product/BACKLOG.md` +- Workflow : `docs/WORKFLOW.md` + +--- + +## Exemple (a supprimer) +- Résumé : application web interne pour gérer des stocks. +- Problème : suivi manuel sur tableur. +- Lancer en local : `make dev`. diff --git a/a-lire.md b/a-lire.md new file mode 100644 index 0000000..4718e9c --- /dev/null +++ b/a-lire.md @@ -0,0 +1,66 @@ +# À LIRE — Initialisation du projet + +Ce dépôt est basé sur le template **template-webapp**. + +## Étapes obligatoires + +1. Renommer le projet (repo, README, docker-compose) +2. Compléter les fichiers de contexte et de vision +3. Lire `docs/ARCHITECTURE.md` avant toute écriture de code + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé architecture / dev. + +--- + +## 1. Description du projet + +- Nom du projet : (exemple: StockPilot — a supprimer) +- Type de webapp : (exemple: SaaS B2B — a supprimer) +- Public cible : (exemple: PME logistique — a supprimer) +- Objectif principal : (exemple: suivi des stocks en temps réel — a supprimer) + +--- + +## 2. Contraintes fortes + +- Self-hosted / Cloud : (exemple: Self-hosted — a supprimer) +- Mono-utilisateur / Multi-utilisateur : (exemple: Multi-utilisateur — a supprimer) +- Données sensibles : oui / non +- Contraintes légales (RGPD = Règlement Général sur la Protection des Données, etc.) : (exemple: RGPD + hébergement UE — a supprimer) + +--- + +## 3. Stack envisagée (indicative) + +- Frontend : +- Backend : +- Base de données : +- Stockage fichiers : + +--- + +## 4. Règles non négociables + +- Monolithe modulaire (un seul dépôt, modules séparés) +- ADR obligatoire pour toute décision structurante (ADR = Architecture Decision Record) +- Backlog produit avant toute implémentation + +--- + +## 5. Démarrage rapide + +- Compléter `PROJECT_CONTEXT.md` +- Compléter `product/VISION.md` +- Compléter `docs/ARCHITECTURE.md` +- Créer les premières REQ (exigences) dans `product/BACKLOG.md` +- Documenter les outils dans `outils_dev_pref.md` + +--- + +## Exemple (a supprimer) +- Type de webapp : SaaS B2B. +- Contraintes : RGPD + hébergement UE. diff --git a/backend/CONTEXT.md b/backend/CONTEXT.md new file mode 100644 index 0000000..2b7b8ed --- /dev/null +++ b/backend/CONTEXT.md @@ -0,0 +1,49 @@ +# Contexte backend + +Ce document décrit le rôle du backend, ses responsabilités et ses choix techniques. +Tout ce qui est indiqué ici est la référence pour les agents backend. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé backend. + +--- + +## Objectif du backend +- Problème métier couvert : (exemple: suivi manuel sur tableur — a supprimer) +- Responsabilités principales : +- Hors périmètre : (exemple: à personnaliser — a supprimer) + +## Interfaces +- API publique (API = Interface de Programmation) : +- Authentification/autorisation : +- Intégrations externes : (exemple: ERP existant — a supprimer) + +## Données +- Base(s) utilisée(s) : +- Modèle de données clé : +- Stratégie de migration : + +## Architecture interne +- Style (monolithe modulaire, hexagonal, etc.) : +- Modules principaux : +- Couche d’accès aux données : + +## Qualité & exploitation +- Observabilité (logs/metrics/traces = journaux/mesures/traces) : +- Tests (unitaires/intégration) : +- Performance attendue : (exemple: à personnaliser — a supprimer) + +## Conventions +- Organisation du code : +- Nommage : +- Gestion erreurs : + +--- + +## Exemple (a supprimer) +- Style : monolithe modulaire avec modules `users`, `billing`, `catalog`. +- API : REST `/api/v1` + JWT (Jeton d’authentification). +- DB : PostgreSQL, migrations via outils natifs. diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/contracts/data_model.md b/contracts/data_model.md new file mode 100644 index 0000000..6b795f5 --- /dev/null +++ b/contracts/data_model.md @@ -0,0 +1,24 @@ +# Modèle de données + +Décrit les entités clés et leurs relations. + +--- + +## Légende des zones +- `` : à compléter par un agent spécialisé backend. + +--- + +## Entités principales +- Entité : +- Champs : +- Contraintes : + +## Relations +- Relation : +- Cardinalité : + +--- + +## Exemple (a supprimer) +- `User` 1..N `Order`. diff --git a/contracts/errors.md b/contracts/errors.md new file mode 100644 index 0000000..a61635e --- /dev/null +++ b/contracts/errors.md @@ -0,0 +1,24 @@ +# Contrat d’erreurs API + +Ce document définit le format standard des erreurs. + +--- + +## Légende des zones +- `` : à compléter par un agent spécialisé backend. + +--- + +## Format +- Structure : +- Codes d’erreur : +- Messages utilisateurs vs techniques : + +## Conventions +- Codes HTTP : +- Champs obligatoires : + +--- + +## Exemple (a supprimer) +- `{ "error": { "code": "VALIDATION_ERROR", "message": "Email invalide" } }` diff --git a/contracts/import/examples/import_full.json b/contracts/import/examples/import_full.json new file mode 100644 index 0000000..e69de29 diff --git a/contracts/import/examples/import_min.json b/contracts/import/examples/import_min.json new file mode 100644 index 0000000..e69de29 diff --git a/contracts/import/import.schema.json b/contracts/import/import.schema.json new file mode 100644 index 0000000..baaa4d6 --- /dev/null +++ b/contracts/import/import.schema.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Import Item", + "type": "object", + "required": ["source", "item"], + "properties": { + "source": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "imported_at": {"type": "string", "format": "date-time"} + } + }, + "item": { + "type": "object", + "required": ["name", "domain"], + "properties": { + "name": {"type": "string"}, + "domain": {"type": "string"}, + "description": {"type": "string"}, + "specs": { + "type": "object", + "additionalProperties": true + } + } + } + } +} \ No newline at end of file diff --git a/contracts/openapi.yaml b/contracts/openapi.yaml new file mode 100644 index 0000000..e69de29 diff --git a/contracts/pagination.md b/contracts/pagination.md new file mode 100644 index 0000000..a7a9dbf --- /dev/null +++ b/contracts/pagination.md @@ -0,0 +1,24 @@ +# Contrat de pagination + +Ce document définit la pagination standard pour l’API. + +--- + +## Légende des zones +- `` : à compléter par un agent spécialisé backend. + +--- + +## Stratégie +- Type (page/offset/cursor) : +- Paramètres : + +## Réponse +- Structure des meta : +- Liens (next/prev) : + +--- + +## Exemple (a supprimer) +- Paramètres : `page=1&limit=20`. +- Meta : `total`, `page`, `page_size`. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/docs/API.md b/docs/API.md new file mode 100644 index 0000000..5c5914d --- /dev/null +++ b/docs/API.md @@ -0,0 +1,42 @@ +# Spécification API + +Décrit les conventions d’API côté backend et les règles de compatibilité. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé backend. + +--- + +## 1. Versioning +- Stratégie (URL, header, autre) : +- Politique de dépréciation : + +## 2. Authentification +- Méthode (JWT = jeton, session, OAuth = délégation d’accès) : +- Durée de session / refresh : + +## 3. Conventions HTTP +- Codes d’erreurs : +- Idempotence (appel sans effet si répété) : +- Pagination : +- Tri/filtre : + +## 4. Formats +- Format JSON : +- Dates / timezone : +- Naming (camelCase, snake_case) : + +## 5. Contrats +- Erreurs : `contracts/errors.md` +- Pagination : `contracts/pagination.md` +- Modèle de données : `contracts/data_model.md` + +--- + +## Exemple (a supprimer) +- Versioning : `/api/v1`. +- Dates : ISO-8601 en UTC. +- Erreurs : `{ "error": { "code": "VALIDATION_ERROR" } }`. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000..1487142 --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,64 @@ +# Architecture du projet + +Ce document formalise l’architecture cible. Il doit être maintenu à jour. +Il sert de base aux décisions techniques, aux ADR et au découpage des tâches. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé architecture. + +--- + +## 1. Vue d’ensemble +- Objectif produit : (exemple: améliorer la traçabilité — a supprimer) +- Type d’app (web, mobile, API) : (exemple: à personnaliser — a supprimer) +- Contraintes fortes : (exemple: déploiement on-premise — a supprimer) + +## 2. Principes d’architecture +- Principes non négociables : (exemple: à personnaliser — a supprimer) +- Principes d’évolution : +- Qualités prioritaires (performance, sécurité, scalabilité) : (exemple: sécurité et performance — a supprimer) + +## 3. Architecture logique +- Modules principaux : +- Responsabilités par module : +- Frontend/Backend séparation : + +## 4. Architecture technique +- Langages & frameworks : +- Base de données : +- Stockage fichiers : +- Infra cible (cloud/self-hosted) : (exemple: self-hosted — a supprimer) + +## 5. Flux de données +- Flux principaux (lecture/écriture) : +- Intégrations externes : (exemple: ERP existant — a supprimer) +- Gestion des événements/asynchronisme : + +## 6. Sécurité +- Authentification/autorisation : +- Données sensibles : (exemple: emails + historiques de paiement — a supprimer) +- Traçabilité/audit : + +## 7. Observabilité +- Logs (journaux) : +- Metrics (mesures) : +- Alerting (alertes) : + +## 8. Conventions de code +- Organisation des dossiers : +- Standards de code : +- Tests obligatoires : + +## 9. Évolution & dette +- Zones à risque : (exemple: montée en charge — a supprimer) +- Améliorations prévues : (exemple: reporting avancé — a supprimer) + +--- + +## Exemple (a supprimer) +- Modules : `auth`, `users`, `billing`, `catalog`. +- DB : PostgreSQL + migrations. +- Auth : JWT (jeton) + RBAC (contrôle d’accès par rôle). diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md new file mode 100644 index 0000000..9f7a5ff --- /dev/null +++ b/docs/DEPLOYMENT.md @@ -0,0 +1,34 @@ +# Déploiement + +Décrit les environnements et le processus de déploiement. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé DevOps. + +--- + +## 1. Environnements +- Local : +- Staging (pré-production) : +- Production : + +## 2. Pipeline CI/CD +- Étapes : +- Stratégie de release : + +## 3. Configuration +- Variables d’environnement : +- Secrets : + +## 4. Migrations +- Stratégie : +- Rollback (retour arrière) : + +--- + +## Exemple (a supprimer) +- CI/CD : tests -> build -> déploiement. +- Release : tag git + changelog. diff --git a/docs/OPERATIONS.md b/docs/OPERATIONS.md new file mode 100644 index 0000000..34fbbc4 --- /dev/null +++ b/docs/OPERATIONS.md @@ -0,0 +1,38 @@ +# Opérations / Runbook + +Ce document décrit comment opérer le système au quotidien. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé exploitation. + +--- + +## 1. Démarrage / arrêt +- Commandes locales : +- Commandes production : + +## 2. Supervision +- Logs (journaux) : +- Metrics (mesures) : +- Traces : + +## 3. Alerting +- Seuils critiques : +- Canaux d’alerte : (exemple: email + chat interne — a supprimer) + +## 4. Sauvegardes & restauration +- Fréquence : (exemple: quotidienne — a supprimer) +- Procédure de restauration : + +## 5. Incidents +- Procédure : +- Rôles & responsabilités : (exemple: admin système — a supprimer) + +--- + +## Exemple (a supprimer) +- Logs : centralisés via Loki. +- Alertes : erreurs 5xx > 2% pendant 5 min. diff --git a/docs/PR_CHECKLIST.md b/docs/PR_CHECKLIST.md new file mode 100644 index 0000000..f537f10 --- /dev/null +++ b/docs/PR_CHECKLIST.md @@ -0,0 +1,16 @@ +# Checklist PR + +Avant de demander une revue, vérifier : + +- Description claire et liée à un REQ (REQ = exigence produit) +- Tests exécutés et résultat indiqué +- Aucun secret dans le code +- Documentation mise à jour si nécessaire +- ADR ajouté si décision structurante +- Migration DB mentionnée si applicable (DB = base de données) + +--- + +## Exemple (a supprimer) +- Tests : `make test`. +- REQ : REQ-012. diff --git a/docs/SECURITY.md b/docs/SECURITY.md new file mode 100644 index 0000000..7947777 --- /dev/null +++ b/docs/SECURITY.md @@ -0,0 +1,40 @@ +# Sécurité + +Décrit les exigences de sécurité et les règles de conformité. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé sécurité. + +--- + +## 1. Données & confidentialité +- Données sensibles : (exemple: emails + historiques de paiement — a supprimer) +- Classification des données : +- Conservation / suppression : (exemple: 12 mois — a supprimer) + +## 2. Authentification / autorisation +- Modèle d’accès : +- MFA (Multi-Factor Authentication = double facteur) / SSO (Single Sign-On = connexion unique) : (exemple: MFA non requis — a supprimer) +- Gestion des rôles : + +## 3. Secrets & configuration +- Stockage des secrets : +- Rotation : + +## 4. Sécurité applicative +- Validation des entrées : +- Protection CSRF/XSS (attaques web courantes) : +- Chiffrement en transit/au repos : + +## 5. Journalisation & audit +- Événements audités : +- Rétention : + +--- + +## Exemple (a supprimer) +- Données sensibles : emails, adresses, historiques de paiement. +- Secrets : stockés dans un coffre, jamais en clair. diff --git a/docs/STYLEGUIDE.md b/docs/STYLEGUIDE.md new file mode 100644 index 0000000..2f4e5fd --- /dev/null +++ b/docs/STYLEGUIDE.md @@ -0,0 +1,34 @@ +# Guide de style + +Ce guide définit les conventions de code et de documentation. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé. + +--- + +## 1. Nommage +- Variables / fonctions : +- Fichiers / dossiers : +- API endpoints : + +## 2. Formatage +- Formatter / linter : +- Règles principales : + +## 3. Tests +- Nommage des tests : +- Structure des tests : + +## 4. Documentation +- Doc obligatoire : (exemple: README + ARCHITECTURE — a supprimer) +- ADR (Architecture Decision Record) : + +--- + +## Exemple (a supprimer) +- Formatter : `prettier` + `eslint`. +- Tests : `feature_x.test.ts`. diff --git a/docs/WORKFLOW.md b/docs/WORKFLOW.md new file mode 100644 index 0000000..57c4887 --- /dev/null +++ b/docs/WORKFLOW.md @@ -0,0 +1,62 @@ +# Processus de développement + +Ce document standardise le workflow de dev pour faciliter la collaboration. +Il sert de référence aux agents et aux contributeurs. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé architecture / dev. + +--- + +## 1. Branches +- Convention de nommage : +- Branches protégées : (exemple: main — a supprimer) +- Politique de merge : + +## 2. Commits +- Convention (ex: conventional commits) : +- Granularité attendue : (exemple: 1 feature par PR — a supprimer) + +## 3. Pull Requests +- Template PR : +- Relectures requises : (exemple: 1 review — a supprimer) +- Checklist obligatoire : `docs/PR_CHECKLIST.md` + +## 4. CI/CD +- Pipeline minimal (lint/test/build) : +- Vérifications bloquantes : + +## 5. Releases +- Versioning (semver = versionnage sémantique) : +- Tagging : +- Release notes : `product/RELEASE_NOTES.md` + +## 6. Qualité +- Definition of Done (définition de terminé) : (exemple: tests + doc — a supprimer) +- Tests obligatoires : +- Mises à jour doc : (exemple: si impact sur l’API — a supprimer) + +## 7. Hotfix / Urgence +- Procédure : +- Responsables : (exemple: lead dev — a supprimer) + +--- + +## Références d’environnement (issues de `outils_dev_pref.md`) +- Hébergement Git : Gitea +- URL serveur Git : https://gitea.maison43.duckdns.org/ +- Utilisateur Git : gilles +- Timezone : Europe/Paris +- Langue : francais +- Réseau local : 10.0.0.0/22 +- Passerelle : 10.0.0.1 + +--- + +## Exemple (a supprimer) +- Branches : `main`, `develop`, `feat/*`, `fix/*`. +- Commits : Conventional Commits. +- CI : lint + tests + build. diff --git a/docs/adr/0001-exemple.md b/docs/adr/0001-exemple.md new file mode 100644 index 0000000..6fa95cf --- /dev/null +++ b/docs/adr/0001-exemple.md @@ -0,0 +1,24 @@ +# ADR-0001 — Exemple (a supprimer) + +- Statut : accepted +- Date : 2026-01-27 + +## Contexte +- Besoin d’un framework API simple et maintenable. + +## Décision +- Utiliser un monolithe modulaire. + +## Alternatives considérées +- Microservices. +- Serverless (exécution sans serveur dédié). + +## Conséquences +- Déploiement plus simple. +- Risque de croissance du monolithe. + +## Impacts techniques +- Découper par domaines. + +## Notes +- Revoir après 6 mois. diff --git a/docs/adr/TEMPLATE.md b/docs/adr/TEMPLATE.md new file mode 100644 index 0000000..784e30e --- /dev/null +++ b/docs/adr/TEMPLATE.md @@ -0,0 +1,35 @@ +# ADR-XXXX — + +- Statut : proposed | accepted | deprecated +- Date : YYYY-MM-DD + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé architecture. + +--- + +## Contexte +- (exemple: à personnaliser — a supprimer) + +## Décision +- + +## Alternatives considérées +- + +## Conséquences +- + +## Impacts techniques +- + +## Notes +- (exemple: à personnaliser — a supprimer) + +--- + +## Exemple (a supprimer) +- Décision : choisir un monolithe modulaire. diff --git a/frontend/CONTEXT.md b/frontend/CONTEXT.md new file mode 100644 index 0000000..ca0e269 --- /dev/null +++ b/frontend/CONTEXT.md @@ -0,0 +1,45 @@ +# Contexte frontend + +Ce document décrit le rôle du frontend, ses responsabilités et ses choix techniques. +Tout ce qui est indiqué ici est la référence pour les agents frontend. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé frontend. + +--- + +## Objectif du frontend +- Parcours utilisateur principaux : (exemple: à personnaliser — a supprimer) +- Responsabilités principales : +- Hors périmètre : (exemple: à personnaliser — a supprimer) + +## Interfaces +- API consommées (API = Interface de Programmation) : +- Authentification/autorisation : +- Intégrations externes : (exemple: ERP existant — a supprimer) + +## Architecture UI +- Framework : +- Structure des pages : +- Gestion d’état : +- Design system / UI kit (bibliothèque de composants) : + +## Qualité & accessibilité +- Performance attendue : (exemple: à personnaliser — a supprimer) +- Accessibilité (a11y = accessibilité web) : +- Tests (unitaires/E2E = tests de bout en bout) : + +## Conventions +- Organisation du code : +- Nommage : +- Gestion erreurs : + +--- + +## Exemple (a supprimer) +- Framework : React + Vite. +- Pages : `dashboard`, `settings`, `billing`. +- État : Zustand + React Query. diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/outils_dev_pref.md b/outils_dev_pref.md new file mode 100644 index 0000000..22e7f2c --- /dev/null +++ b/outils_dev_pref.md @@ -0,0 +1,74 @@ +# Outils & préférences de développement + +Ce fichier décrit **mes outils habituels** et **mes préférences**. +Il sert de référence aux agents et aux contributeurs. + +--- + +## Environnement de développement + +- OS principal : debian 13 +- Éditeur / IDE : VS Code +- Shell : +- Terminal : + +--- + +## Outils backend + +- Langage principal : python, go +- Framework API : +- ORM / DB access : +- Outils de test : +- Outils de lint / format : + +--- + +## Outils frontend + +- Framework UI : +- Bundler : +- Gestion état : +- Tests UI / E2E : + +--- + +## Préférences UI / Web + +- Thème préféré : gruvbox, dark, vintage - monokai dark +- Couleurs dominantes : +- Style UI : (minimal, dense, dashboard, etc.) +- Accessibilité prioritaire : oui / non + +--- + +## Paramètres projet + +- Timezone : Europe/Paris +- Langue : francais +- Hébergement Git (Gitea/GitHub/GitLab) : Gitea +- URL serveur Git : https://gitea.maison43.duckdns.org/ +- Utilisateur Git : gilles +- Réseau local : 10.0.0.0/22 +- Passerelle : 10.0.0.1 +- Notes sécurité (ex: pas de secrets en clair) : + +--- + +## Outils DevOps + +- Conteneurs : Docker version 29.1.5 et ultérieur +- CI : +- Gestion secrets : + +--- + +## Notes + +Tout outil ajouté ici est **autorisé par défaut** dans le projet. + +--- + +## Exemple (a supprimer) +- Framework API : FastAPI. +- CI : GitHub Actions. diff --git a/product/BACKLOG.md b/product/BACKLOG.md new file mode 100644 index 0000000..449d5ec --- /dev/null +++ b/product/BACKLOG.md @@ -0,0 +1,35 @@ +# Product Backlog + +## Statuts +proposed | accepted | planned | in_progress | done | rejected + +## Priorités +Must | Should | Could | Won’t + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé. + +--- + +### REQ-XXX — +- Description : (exemple: permettre la connexion utilisateur — a supprimer) +- Valeur utilisateur : (exemple: accès sécurisé — a supprimer) +- Inclus / Exclus : (exemple: inclut login, exclut SSO — a supprimer) +- Priorité : (exemple: Must — a supprimer) +- Statut : (exemple: planned — a supprimer) +- Impacts (FE/BE/DB/Arch = Frontend/Backend/Base de données/Architecture) : +- Dépendances : (exemple: aucune — a supprimer) +- Notes : (exemple: MVP — a supprimer) + +--- + +## Exemple (a supprimer) +### REQ-001 — Authentification +- Description : permettre la connexion utilisateur. +- Valeur utilisateur : accès sécurisé. +- Priorité : Must +- Statut : planned +- Impacts : FE/BE diff --git a/product/RELEASE_NOTES.md b/product/RELEASE_NOTES.md new file mode 100644 index 0000000..c9a03f5 --- /dev/null +++ b/product/RELEASE_NOTES.md @@ -0,0 +1,21 @@ +# Release notes + +Historique des versions et changements majeurs. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. + +--- + +## Version X.Y.Z — YYYY-MM-DD +- Highlights : (exemple: ajout login — a supprimer) +- Breaking changes (changements cassants) : (exemple: renommage d’endpoint — a supprimer) +- Correctifs : (exemple: bug session — a supprimer) +- Migration : (exemple: exécuter scripts DB — a supprimer) + +--- + +## Exemple (a supprimer) +- 0.1.0 — 2026-02-01 : MVP initial. diff --git a/product/ROADMAP.md b/product/ROADMAP.md new file mode 100644 index 0000000..21cb2bb --- /dev/null +++ b/product/ROADMAP.md @@ -0,0 +1,22 @@ +# Roadmap + +Ce document présente la planification macro par version ou trimestre. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. + +--- + +## Format +- Version / période : (exemple: 2026-Q1 — a supprimer) +- Objectifs : (exemple: MVP fonctionnel — a supprimer) +- Features clés : (exemple: auth + dashboard — a supprimer) +- Risques : (exemple: dette technique — a supprimer) + +--- + +## Exemple (a supprimer) +- 2026-Q1 : MVP (produit minimum viable) login + dashboard. +- 2026-Q2 : reporting avancé. diff --git a/product/VISION.md b/product/VISION.md new file mode 100644 index 0000000..4d89434 --- /dev/null +++ b/product/VISION.md @@ -0,0 +1,35 @@ +# Vision produit + +Ce document synthétise la vision et les objectifs long terme. + +--- + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. + +--- + +## Problème +- Problème principal : (exemple: suivi manuel sur tableur — a supprimer) +- Pourquoi maintenant : (exemple: croissance de l’équipe — a supprimer) + +## Utilisateurs cibles +- Personas : (exemple: gestionnaire stock — a supprimer) +- Besoins clés : (exemple: suivi + alertes — a supprimer) + +## Proposition de valeur +- Promesse centrale : (exemple: inventaire fiable — a supprimer) +- Différenciation : (exemple: déploiement on-premise — a supprimer) + +## Objectifs mesurables +- Indicateurs (KPI = indicateurs clés) : (exemple: taux d’activation 40% — a supprimer) +- Horizon temporel : (exemple: 90 jours — a supprimer) + +## Non-objectifs +- Ce que le produit ne fera pas : (exemple: à personnaliser — a supprimer) + +--- + +## Exemple (a supprimer) +- Problème : gestion manuelle des stocks. +- KPI : taux d’activation 40% en 90 jours. diff --git a/scripts/db/backup.sh b/scripts/db/backup.sh new file mode 100755 index 0000000..e69de29 diff --git a/scripts/db/restore.sh b/scripts/db/restore.sh new file mode 100755 index 0000000..e69de29 diff --git a/scripts/dev.sh b/scripts/dev.sh new file mode 100755 index 0000000..e69de29 diff --git a/scripts/fmt.sh b/scripts/fmt.sh new file mode 100755 index 0000000..e69de29 diff --git a/scripts/lint.sh b/scripts/lint.sh new file mode 100755 index 0000000..e69de29 diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100755 index 0000000..e69de29 diff --git a/tasks/001-exemple.md b/tasks/001-exemple.md new file mode 100644 index 0000000..5d61376 --- /dev/null +++ b/tasks/001-exemple.md @@ -0,0 +1,42 @@ +# TASK-001 — Exemple de tâche (a supprimer) + +## Références +- PROJECT_CONTEXT.md +- docs/ARCHITECTURE.md +- product/BACKLOG.md → REQ-001 + +## Objectif +- Ajouter un écran de connexion basique. + +## Non-objectifs +- SSO, MFA, reset de mot de passe. + +## Périmètre +- Frontend : page login + validation. +- Backend : endpoint `/auth/login`. + +## Description fonctionnelle +- L’utilisateur saisit email + mot de passe. +- En cas d’échec : message clair. + +## Spécifications techniques +- JWT signé en backend. +- Stockage token côté client. + +## Fichiers autorisés +- `frontend/...` +- `backend/...` + +## Critères d’acceptation +- Connexion réussie pour un utilisateur valide. +- Erreur explicite pour identifiants invalides. + +## Tests +- Test unitaire service auth. +- Test E2E login. + +## Risques +- Gestion brute force. + +## Sortie attendue +- PR avec tests + doc. diff --git a/tasks/TEMPLATE.md b/tasks/TEMPLATE.md new file mode 100644 index 0000000..508662f --- /dev/null +++ b/tasks/TEMPLATE.md @@ -0,0 +1,51 @@ +# TASK-XXX — + +## Références +- PROJECT_CONTEXT.md +- docs/ARCHITECTURE.md +- product/BACKLOG.md → REQ-XXX + +## Légende des zones +- ` (exemple: à personnaliser — a supprimer)` : à compléter par toi selon le projet. +- `` : à compléter par un agent spécialisé. + +## Objectif +- (exemple: à personnaliser — a supprimer) + +## Non-objectifs +- (exemple: à personnaliser — a supprimer) + +## Périmètre +- + +## Description fonctionnelle +- (exemple: à personnaliser — a supprimer) + +## Spécifications techniques +- + +## Découpage +- Sous-tâches claires et indépendantes : +- Ordre de réalisation : +- Risques de blocage : + +## Fichiers autorisés +- + +## Critères d’acceptation +- (exemple: à personnaliser — a supprimer) + +## Tests +- + +## Risques +- (exemple: à personnaliser — a supprimer) + +## Sortie attendue +- (exemple: à personnaliser — a supprimer) + +--- + +## Exemple (a supprimer) +- Objectif : permettre l’inscription utilisateur. +- Critères : email valide + confirmation affichée.