173 lines
6.2 KiB
Markdown
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.
|