# 📁 Structure du Projet Web Sentinel

## 🗂️ Organisation du Code

```
web-sentinel/
├── 📄 README.md                          # Documentation principale
├── 📄 LICENSE                            # Licence MIT
├── 📄 requirements.txt                   # Dépendances de production  
├── 📄 requirements-dev.txt               # Dépendances de développement
├── 📄 install.py                         # Script d'installation automatique
├── 📄 quick_start.py                     # Script de démarrage rapide
├── 📄 run_tests.py                      # Tests unitaires simples
├── 📄 ci_test.py                        # Tests compatibilité CI/CD
├── 📄 .gitignore                        # Fichiers à ignorer par Git
│
├── 📂 web_sentinel/                      # 🔧 CODE SOURCE PRINCIPAL
│   ├── 📄 __init__.py                   
│   ├── 📄 model.py                      # Modèles de données (ScanRequest, Finding, ScanResult)
│   ├── 📄 orchestrator.py               # Orchestrateur des modules de scan
│   ├── 📄 scanner.py                    # Scanner principal avec ThreadPoolExecutor
│   ├── 📄 reporting.py                  # Moteur de rapports et historique
│   ├── 📄 cli.py                        # Interface ligne de commande
│   │
│   ├── 📂 gui/                          # 🖥️ INTERFACE GRAPHIQUE
│   │   ├── 📄 __init__.py
│   │   ├── 📄 main_window.py            # Interface tkinter principale
│   │   ├── 📄 headless.py               # Interface sans GUI pour CI/CD
│   │   ├── 📄 localization.py           # Système de traduction FR/EN
│   │   ├── 📄 app.py                    # Point d'entrée GUI
│   │   ├── 📄 config_manager.py         # Gestion configuration
│   │   └── 📂 templates/                # Templates HTML pour rapports
│   │
│   ├── 📂 mobile/                       # 📱 INTERFACE MOBILE (KIVY)
│   │   ├── 📄 __init__.py
│   │   └── 📄 kivy_app.py              # Application mobile Android
│   │
│   └── 📂 checks/                       # 🔍 MODULES DE SÉCURITÉ
│       ├── 📄 __init__.py
│       ├── 📄 tls.py                   # Vérifications TLS/SSL
│       ├── 📄 headers.py               # Headers HTTP de sécurité  
│       ├── 📄 static_analysis.py       # Analyse DOM (optionnel, requiert bs4)
│       ├── 📄 injection.py             # Tests d'injection bénins
│       └── 📄 third_party.py           # Intégrations ZAP/Burp/Nikto
│
├── 📂 tests/                            # 🧪 TESTS AUTOMATISÉS
│   ├── 📄 conftest.py                  # Configuration pytest
│   ├── 📄 test_model.py                # Tests des modèles de données
│   ├── 📄 test_orchestrator.py         # Tests de l'orchestrateur
│   ├── 📄 test_localization.py         # Tests du système de traduction
│   └── 📄 test_headless_gui.py         # Tests de l'interface headless
│
├── 📂 examples/                         # 📋 EXEMPLES ET MODÈLES
│   ├── 📄 domains_example.txt          # Exemple de liste de domaines
│   └── 📄 domains_example.json         # Exemple de configuration JSON
│
└── 📂 .github/                          # ⚙️ CONFIGURATION GITHUB
    └── 📄 copilot-instructions.md      # Instructions pour GitHub Copilot
```

## 🎯 Points d'Entrée Principaux

### 🖥️ Interface Graphique
```bash
python -m web_sentinel.gui        # Interface tkinter complète
```

### 💻 Ligne de Commande  
```bash
python -m web_sentinel.cli example.com
```

### 🤖 Mode Headless (CI/CD)
```python
from web_sentinel.gui.headless import HeadlessWebSentinelGUI
app = HeadlessWebSentinelGUI()
result = app.run_headless_test(['example.com'])
```

### 📱 Application Mobile
```bash
python web_sentinel/mobile/kivy_app.py
```

## 🔧 Scripts Utilitaires

- **`install.py`** : Installation automatique avec vérifications système
- **`run_tests.py`** : Tests unitaires sans dépendances externes
- **`pytest tests/`** : Tests complets avec framework pytest

## 📦 Dépendances

### 🟢 Obligatoires
- `requests` : Requêtes HTTP
- `jinja2` : Génération rapports HTML  
- `pyyaml` : Configuration YAML

### 🟡 Optionnelles
- `beautifulsoup4` : Module static-analysis 
- `tkinter` : Interface graphique (généralement inclus avec Python)

### 🔧 Développement
- `pytest` : Framework de tests
- `black`, `flake8`, `mypy` : Qualité de code

---

## 🌟 Architecture Modulaire

Le projet suit une **architecture modulaire passive-first** :

1. **🔍 Modules de scan** : Chaque module expose une fonction `evaluate_*`
2. **🎯 Orchestrateur** : Exécute les modules en parallèle via ThreadPoolExecutor
3. **📊 Moteur de rapport** : Consolidation et export HTML/JSON
4. **🌐 Interfaces multiples** : GUI, CLI, Headless, Mobile
5. **🔧 Compatibilité maximale** : Dégradation gracieuse selon dépendances disponibles