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

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