chartbastan/docs/project-structure.md
2026-02-01 09:31:38 +01:00

173 lines
6.2 KiB
Markdown

# 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.