generated from vincent/template-projet
docs: initialize CLAUDE.md for AuditShield
Some checks failed
Deploy / deploy (push) Failing after 9s
Some checks failed
Deploy / deploy (push) Failing after 9s
This commit is contained in:
96
CLAUDE.md
96
CLAUDE.md
@@ -1,60 +1,84 @@
|
|||||||
# [NOM DU PROJET]
|
# AuditShield
|
||||||
|
|
||||||
## Projet
|
## Projet
|
||||||
[Une phrase : ce que fait l'app, pour qui, pourquoi.]
|
Outil d'audit infrastructure et sécurité pour clients MSP. Permet de lancer des scans réseau, vulnérabilités et pentest automatisés, avec suivi des actions et génération de rapports exportables (PDF + dashboard web) compréhensibles pour des clients non-techniques.
|
||||||
|
|
||||||
## Stack
|
## Stack
|
||||||
- Runtime : Node 20 / Python 3.11 / ...
|
- Frontend : Next.js 14 + Tailwind + shadcn/ui
|
||||||
- Framework : ...
|
- Backend : FastAPI (Python 3.11)
|
||||||
- Base de données : MariaDB / PostgreSQL / SQLite
|
- Base de données : PostgreSQL
|
||||||
- Déploiement : Docker → Synology NAS (rigolet.tech)
|
- ORM : SQLAlchemy + Alembic (migrations)
|
||||||
|
- Auth : JWT + bcrypt
|
||||||
|
- PDF : WeasyPrint
|
||||||
|
- Déploiement : Docker → Synology NAS ou VPS (rigolet.tech)
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
```
|
```
|
||||||
src/
|
frontend/
|
||||||
components/ # Exemple de composant : src/components/UserCard.tsx
|
app/ # Next.js App Router
|
||||||
api/ # Exemple de route : src/api/users/route.ts
|
components/ # Composants réutilisables
|
||||||
stores/ # State management
|
lib/ # Utilitaires, API client
|
||||||
|
backend/
|
||||||
|
api/ # Routes FastAPI
|
||||||
|
scanners/ # Orchestration Nmap, OpenVAS, Metasploit, AD
|
||||||
|
models/ # Modèles SQLAlchemy
|
||||||
|
reports/ # Génération PDF
|
||||||
docker/
|
docker/
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
.gitea/
|
docker-compose.prod.yml
|
||||||
workflows/
|
|
||||||
deploy.yml
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Commandes
|
## Commandes
|
||||||
```bash
|
```bash
|
||||||
npm install # Installer les dépendances
|
# Frontend
|
||||||
npm run dev # Lancer en développement
|
cd frontend && npm install && npm run dev
|
||||||
npm run build # Build production
|
|
||||||
npm test # Lancer UN test ciblé, pas toute la suite
|
# Backend
|
||||||
npm run typecheck # IMPORTANT : lancer après chaque série de modifications
|
cd backend && pip install -r requirements.txt && uvicorn main:app --reload
|
||||||
|
|
||||||
|
# Docker complet
|
||||||
|
docker compose -f docker/docker-compose.yml up -d
|
||||||
|
|
||||||
|
# Migrations BDD
|
||||||
|
cd backend && alembic upgrade head
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
pytest backend/tests/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Modèle de données
|
||||||
|
- Client : id, nom, contact, créé_le
|
||||||
|
- Audit : id, client_id, statut, date_début, date_fin, score_global
|
||||||
|
- Cible : id, audit_id, type (IP/domaine/subnet), valeur
|
||||||
|
- Vulnérabilité : id, audit_id, criticité (critique/important/modéré/faible), titre, description, recommandation
|
||||||
|
- Action : id, vulnérabilité_id, statut (ouvert/en_cours/résolu), assigné_à, note
|
||||||
|
|
||||||
|
## Sécurité IMPORTANT
|
||||||
|
- Jamais de credentials dans le code, toujours via .env
|
||||||
|
- Les scans ne se lancent QUE sur des cibles validées par l'utilisateur
|
||||||
|
- Logs de toutes les actions de scan en BDD
|
||||||
|
- Rate limiting sur toutes les routes API
|
||||||
|
|
||||||
## Code style
|
## Code style
|
||||||
- ES modules (import/export), jamais CommonJS (require)
|
- ES modules (import/export), jamais CommonJS
|
||||||
- Functional components + hooks uniquement, jamais de class components
|
- Functional components + hooks uniquement
|
||||||
- TypeScript strict activé
|
- TypeScript strict sur le frontend
|
||||||
- Destructure les imports quand possible
|
- Type hints Python obligatoires sur le backend
|
||||||
- IMPORTANT : ne jamais considérer une tâche terminée sans typecheck qui passe
|
- IMPORTANT : typecheck après chaque série de modifications
|
||||||
|
|
||||||
## Git
|
## Git
|
||||||
- Branches : main (prod) → dev (dev)
|
- Branches : main (prod) → dev → feature/xxx
|
||||||
- Commits : feat: / fix: / docs: / refactor: / chore:
|
- Commits : feat: / fix: / docs: / refactor: / chore:
|
||||||
- IMPORTANT : toujours créer une nouvelle branche pour chaque tâche
|
- IMPORTANT : toujours créer une branche pour chaque tâche
|
||||||
- IMPORTANT : ne jamais pusher directement sur main
|
- IMPORTANT : ne jamais pusher directement sur main
|
||||||
|
|
||||||
## Déploiement
|
## Déploiement
|
||||||
Pipeline automatique via Gitea Actions.
|
Gitea Actions → Docker → NAS ou VPS selon le client
|
||||||
Chaque push sur develop déclenche un déploiement sur le NAS.
|
Voir @docker/docker-compose.yml et @.gitea/workflows/deploy.yml
|
||||||
Voir @.gitea/workflows/deploy.yml pour le détail du pipeline.
|
|
||||||
|
|
||||||
## Références
|
|
||||||
- Vue d'ensemble du projet : @README.md
|
|
||||||
- Variables d'environnement : @.env.example
|
|
||||||
|
|
||||||
## Ce que Claude doit savoir sur CE projet
|
## Ce que Claude doit savoir sur CE projet
|
||||||
- [Ajoute ici les erreurs que Claude répète spécifiquement sur ce projet]
|
- Les scans sont des opérations longues → utiliser des jobs asynchrones (Celery ou BackgroundTasks FastAPI)
|
||||||
- [Ex : "ne pas utiliser axios, on utilise fetch natif"]
|
- Le rapport PDF doit être compréhensible par un dirigeant non-technique
|
||||||
- [Ex : "la BDD utilise snake_case, le code TypeScript utilise camelCase"]
|
- Toujours traduire les CVE en langage clair dans les rapports
|
||||||
- [Ex : "les tests sont dans __tests__/, pas dans src/"]
|
- La BDD utilise snake_case, le frontend TypeScript utilise camelCase
|
||||||
|
- Les criticités : critique (CVSS 9-10), important (7-8.9), modéré (4-6.9), faible (0-3.9)
|
||||||
Reference in New Issue
Block a user