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

5.8 KiB

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

{
  "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

{
  "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