# Structure du Projet ChartBastan

## Vue d'ensemble

**Type de référentiel:** Multi-part (Frontend + Backend séparés)

Le projet ChartBastan est divisé en deux parties distinctes qui communiquent via des API REST:

- **Frontend:** Application Next.js avec TypeScript et React
- **Backend:** API FastAPI avec Python

---

## Architecture du Projet

```
chartbastan/
├── _bmad/                          # Configuration BMad (workflow/agents)
├── _bmad-output/                   # Artefacts de planification et implémentation
│   ├── analysis/                   # Analyses et brainstorming
│   ├── implementation-artifacts/    # Documentation d'implémentation (38 fichiers)
│   └── planning-artifacts/         # PRD, Architecture, Epics, UX
├── backend/                        # Backend FastAPI (Part: api)
│   ├── alembic/                     # Migrations de base de données
│   ├── app/
│   │   ├── api/                    # Endpoints REST (13 fichiers)
│   │   ├── lib/                    # Bibliothèques partagées
│   │   ├── main.py                 # Point d'entrée FastAPI
│   │   ├── middleware/             # Middleware (auth, CORS)
│   │   ├── ml/                     # Services ML (sentiment, prédiction)
│   │   ├── models/                 # Modèles SQLAlchemy (12 modèles)
│   │   ├── queues/                 # Gestion RabbitMQ
│   │   ├── schemas/                # Schémas Pydantic (14 fichiers)
│   │   ├── scrapers/               # Scrapers (Twitter, Reddit, RSS)
│   │   ├── services/               # Services métier (8 services)
│   │   └── workers/                # Workers async (4 workers)
│   ├── scripts/                    # Scripts utilitaires
│   ├── tests/                      # Tests unitaires (30 fichiers)
│   ├── workers/                    # Scripts d'exécution des workers
│   ├── requirements.txt            # Dépendances Python
│   └── alembic.ini                 # Configuration Alembic
├── chartbastan/                    # Frontend Next.js (Part: frontend)
│   ├── public/                     # Assets statiques
│   ├── src/
│   │   ├── app/                    # App Router Next.js (22 fichiers)
│   │   ├── components/             # Composants React (72 composants)
│   │   ├── db/                     # Drizzle ORM
│   │   ├── hooks/                  # React Hooks (9 hooks)
│   │   ├── lib/                    # Utilitaires et API client (7 fichiers)
│   │   ├── middleware/             # Middleware Next.js
│   │   ├── scripts/                # Scripts de migration
│   │   ├── services/               # Services API (27 services)
│   │   ├── stores/                 # Zustand stores
│   │   └── tests/                  # Tests (48 fichiers)
│   ├── drizzle/                    # Migrations Drizzle
│   ├── package.json                # Dépendances Node.js
│   ├── tsconfig.json               # Configuration TypeScript
│   └── next.config.ts              # Configuration Next.js
└── docs/                           # Documentation du projet
```

---

## Parties du Projet

### Part 1: Frontend (chartbastan/)

**Type:** web  
**Technologie:** Next.js 16.1.3 + TypeScript  
**Rôle:** Interface utilisateur et visualisation des données

**Fonctionnalités principales:**
- Dashboard en temps réel avec D3.js
- Visualisations de données et graphiques
- Gestion des utilisateurs et authentification
- Interface de paris et de prédictions
- Gamification (badges, classements)
- Notifications push

**Points d'entrée:**
- `src/app/page.tsx` - Page d'accueil
- `src/app/layout.tsx` - Layout principal
- `src/main.tsx` - Entrée React

---

### Part 2: Backend (backend/)

**Type:** backend  
**Technologie:** FastAPI 0.128.0 + Python 3.11+  
**Rôle:** API REST, ML, scraping de données

**Fonctionnalités principales:**
- API REST pour les données de matchs et prédictions
- Scraping de données (Twitter, Reddit, RSS)
- Analyse de sentiment (VADER, TextBlob)
- Calcul de l'énergie collective
- Machine Learning pour les prédictions
- File d'attente asynchrone (RabbitMQ)
- Authentification et gestion des utilisateurs

**Points d'entrée:**
- `app/main.py` - Application FastAPI
- `app/api/` - Endpoints REST

---

## Intégration entre Parties

Les deux parties communiquent via des appels API REST:

**Frontend → Backend:**
- Les services dans `src/services/` appellent les endpoints de l'API FastAPI
- API client dans `src/lib/` gère les requêtes HTTP

**Backend → Frontend:**
- API REST sur le port 8000
- Documentation Swagger: `http://localhost:8000/docs`

---

## Points d'Intégration

1. **Authentification:**
   - Backend: `app/middleware/auth.py`
   - Frontend: Services dans `src/services/auth.ts`

2. **Données de Matchs:**
   - Backend: `app/models/match.py`, `app/api/matches.py`
   - Frontend: `src/services/matches.ts`

3. **Prédictions:**
   - Backend: `app/services/prediction.py`, `app/ml/`
   - Frontend: `src/services/predictions.ts`

4. **Notifications:**
   - Backend: Workers RabbitMQ dans `workers/`
   - Frontend: Services web-push dans `src/services/`

---

## Artefacts de Planification

Le dossier `_bmad-output/` contient toute la documentation de planification:

- **PRD:** Product Requirements Document complet
- **Architecture:** Documentation architecturale détaillée
- **Epics:** 9 epics complétés
- **UX:** Spécifications de design et directions
- **Implementation:** 38 fichiers d'implémentation détaillée

Ces documents sont disponibles pour référence lors du développement de nouvelles fonctionnalités.

---

## Base de Données

**Phase 1:** SQLite (pour le développement et le test)

- Frontend: `chartbastan/chartbastan.db` (Drizzle ORM)
- Backend: SQLAlchemy avec Alembic (migrations)

**Phase 2+:** PostgreSQL (production)

---

## Développement Actif

**Statut:** Tous les epics sont complétés  
**Phase actuelle:** Testing de l'application complète

Le projet est prêt pour le test et la validation des fonctionnalités.
