237 lines
5.8 KiB
Markdown
237 lines
5.8 KiB
Markdown
# Métadonnées des Parties du Projet
|
|
|
|
## Informations Générales
|
|
|
|
- **Nom du projet:** ChartBastan
|
|
- **Type de référentiel:** multi-part
|
|
- **Nombre de parties:** 2
|
|
- **Date de la documentation:** 2026-01-18
|
|
|
|
---
|
|
|
|
## Partie 1: Frontend
|
|
|
|
```json
|
|
{
|
|
"part_id": "frontend",
|
|
"display_name": "Frontend Next.js",
|
|
"root_path": "chartbastan/",
|
|
"project_type_id": "web",
|
|
"project_type": "Web Application",
|
|
"primary_language": "TypeScript",
|
|
"primary_framework": "Next.js 16.1.3",
|
|
"entry_point": "src/app/page.tsx",
|
|
"port": 3000,
|
|
"build_tool": "Next.js",
|
|
"styling": "Tailwind CSS v4 + shadcn/ui",
|
|
"state_management": "Zustand + React Query",
|
|
"database": "SQLite (Drizzle ORM)"
|
|
}
|
|
```
|
|
|
|
### Stack Technique
|
|
|
|
**Frontend:**
|
|
- Framework: Next.js 16.1.3
|
|
- Language: TypeScript 5
|
|
- UI Library: shadcn/ui (Radix UI primitives)
|
|
- Styling: Tailwind CSS v4
|
|
- State Management: Zustand 5.0.10
|
|
- Data Fetching: React Query 5.90.18
|
|
- Authentication: better-auth 1.4.14
|
|
- Database: Drizzle ORM 0.44.7 + better-sqlite3 12.6.2
|
|
- Visualization: D3.js 7.9.0, Recharts 3.6.0
|
|
- Animations: Framer Motion 12.26.2
|
|
- Web Push: web-push 3.6.7
|
|
|
|
### Structure des Répertoires Critiques
|
|
|
|
- `src/app/` - App Router (Next.js 16)
|
|
- `src/components/` - Composants React réutilisables
|
|
- `src/services/` - Services API et logique métier
|
|
- `src/hooks/` - React Hooks personnalisés
|
|
- `src/lib/` - Utilitaires et fonctions d'aide
|
|
- `src/stores/` - Zustand stores pour l'état global
|
|
- `src/db/` - Configuration Drizzle ORM
|
|
- `drizzle/` - Migrations de base de données
|
|
|
|
---
|
|
|
|
## Partie 2: Backend
|
|
|
|
```json
|
|
{
|
|
"part_id": "backend",
|
|
"display_name": "Backend FastAPI",
|
|
"root_path": "backend/",
|
|
"project_type_id": "backend",
|
|
"project_type": "API REST",
|
|
"primary_language": "Python",
|
|
"primary_framework": "FastAPI 0.128.0",
|
|
"entry_point": "app/main.py",
|
|
"port": 8000,
|
|
"api_documentation": "/docs",
|
|
"database": "SQLite (SQLAlchemy) → PostgreSQL",
|
|
"message_queue": "RabbitMQ"
|
|
}
|
|
```
|
|
|
|
### Stack Technique
|
|
|
|
**Backend:**
|
|
- Framework: FastAPI 0.128.0
|
|
- Server: Uvicorn 0.30.0
|
|
- Language: Python 3.11+
|
|
- ORM: SQLAlchemy 2.0.45
|
|
- Migrations: Alembic 1.13.0
|
|
- Validation: Pydantic 2.7.0
|
|
- Settings: Pydantic Settings 2.3.0
|
|
|
|
**Data Scraping:**
|
|
- Twitter: tweepy 4.14.0
|
|
- Reddit: praw 7.8.1
|
|
- RSS: feedparser 6.0.11
|
|
|
|
**Machine Learning:**
|
|
- Sentiment Analysis: vaderSentiment 3.3.2
|
|
- NLP: textblob 0.17.1
|
|
|
|
**Async Communication:**
|
|
- Message Queue: pika 1.3.2 (RabbitMQ)
|
|
- Redis: ioredis 5.9.2
|
|
|
|
**Development Tools:**
|
|
- Linting: flake8 7.1.0
|
|
- Formatting: black 24.8.0
|
|
- Testing: pytest 8.3.3
|
|
|
|
### Structure des Répertoires Critiques
|
|
|
|
- `app/api/` - Endpoints REST
|
|
- `app/models/` - Modèles SQLAlchemy
|
|
- `app/schemas/` - Schémas Pydantic
|
|
- `app/services/` - Services métier
|
|
- `app/ml/` - Services ML (sentiment, prédiction)
|
|
- `app/scrapers/` - Scrapers (Twitter, Reddit, RSS)
|
|
- `app/queues/` - Gestion RabbitMQ
|
|
- `app/workers/` - Workers asynchrones
|
|
- `app/middleware/` - Middleware (auth, CORS)
|
|
- `alembic/versions/` - Migrations de base de données
|
|
- `tests/` - Tests unitaires
|
|
|
|
---
|
|
|
|
## Intégration entre Parties
|
|
|
|
### Protocole de Communication
|
|
|
|
**Type:** REST API
|
|
**Protocole:** HTTP/HTTPS
|
|
**Format de données:** JSON
|
|
|
|
### Points d'Intégration
|
|
|
|
1. **Frontend Service → Backend API**
|
|
- Services dans `src/services/` appellent les endpoints de l'API FastAPI
|
|
- Base URL: `http://localhost:8000` (dev)
|
|
|
|
2. **Authentification**
|
|
- Backend: JWT tokens via better-auth
|
|
- Frontend: Gestion des tokens dans Zustand store
|
|
|
|
3. **Synchronisation des Données**
|
|
- Real-time: Websockets (si implémenté)
|
|
- Polling: React Query pour les mises à jour périodiques
|
|
|
|
4. **Notifications**
|
|
- Backend: Workers RabbitMQ → Web Push
|
|
- Frontend: Service Worker pour notifications push
|
|
|
|
---
|
|
|
|
## Dépendances Externes
|
|
|
|
### Frontend
|
|
- Twitter API (si direct access)
|
|
- Reddit API (si direct access)
|
|
|
|
### Backend
|
|
- Twitter API (via tweepy)
|
|
- Reddit API (via praw)
|
|
- RabbitMQ (message broker)
|
|
- Redis (cache, si utilisé)
|
|
|
|
---
|
|
|
|
## Configuration de Développement
|
|
|
|
### Environnement Requis
|
|
|
|
**Frontend:**
|
|
- Node.js 20+
|
|
- npm ou yarn
|
|
|
|
**Backend:**
|
|
- Python 3.11+
|
|
- pip
|
|
|
|
**Services Optionnels:**
|
|
- RabbitMQ (pour workers asynchrones)
|
|
- Redis (pour cache, si utilisé)
|
|
|
|
### Variables d'Environnement
|
|
|
|
**Frontend (.env.local):**
|
|
- `NEXT_PUBLIC_API_URL=http://localhost:8000`
|
|
|
|
**Backend (.env):**
|
|
- `DATABASE_URL=sqlite:///./chartbastan.db`
|
|
- `TWITTER_API_KEY=...`
|
|
- `TWITTER_API_SECRET=...`
|
|
- `TWITTER_ACCESS_TOKEN=...`
|
|
- `TWITTER_ACCESS_SECRET=...`
|
|
- `REDDIT_CLIENT_ID=...`
|
|
- `REDDIT_CLIENT_SECRET=...`
|
|
- `RABBITMQ_URL=amqp://guest:guest@localhost:5672`
|
|
|
|
---
|
|
|
|
## Statut du Projet
|
|
|
|
**Phase de développement:** Testing
|
|
|
|
- ✅ Tous les epics complétés
|
|
- ✅ Architecture implémentée
|
|
- ✅ Frontend et Backend prêts
|
|
- 🔄 Testing en cours
|
|
|
|
**Prochaine étape:** Validation des fonctionnalités et correction des bugs
|
|
|
|
---
|
|
|
|
## Points d'Intérêt pour le Développement
|
|
|
|
1. **Points d'entrée API Backend:**
|
|
- `app/api/matches.py` - Endpoints de matchs
|
|
- `app/api/predictions.py` - Endpoints de prédictions
|
|
- `app/api/users.py` - Endpoints utilisateurs
|
|
|
|
2. **Services Frontend:**
|
|
- `src/services/matches.ts` - Service de matchs
|
|
- `src/services/predictions.ts` - Service de prédictions
|
|
- `src/services/auth.ts` - Service d'authentification
|
|
|
|
3. **Composants UI Clés:**
|
|
- `src/components/dashboard/` - Dashboard principal
|
|
- `src/components/predictions/` - Composants de prédictions
|
|
- `src/components/matches/` - Composants de matchs
|
|
|
|
4. **Machine Learning:**
|
|
- `backend/app/ml/sentiment_analyzer.py` - Analyse de sentiment
|
|
- `backend/app/ml/prediction_calculator.py` - Calcul de prédictions
|
|
|
|
5. **Scraping de Données:**
|
|
- `backend/app/scrapers/twitter_scraper.py` - Scraper Twitter
|
|
- `backend/app/scrapers/reddit_scraper.py` - Scraper Reddit
|
|
- `backend/app/scrapers/rss_scraper.py` - Scraper RSS
|