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

6.2 KiB

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.