# Stack Technologique - ChartBastan ## Vue d'ensemble Le projet ChartBastan utilise une stack moderne full-stack avec: - **Frontend:** Next.js 16 avec TypeScript - **Backend:** FastAPI avec Python 3.11+ - **Base de données:** SQLite (développement) → PostgreSQL (production) - **Communication:** REST API - **Message Queue:** RabbitMQ (pour workers asynchrones) --- ## Partie 1: Frontend (chartbastan/) ### Framework & Language | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Framework | Next.js | 16.1.3 | Framework React moderne avec SSR, SSG, et App Router | | Language | TypeScript | 5.0 | Typage statique pour la fiabilité du code | | Runtime | Node.js | 20+ | Environment JavaScript moderne | ### UI & Styling | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | CSS Framework | Tailwind CSS | v4 | Utilitaire-first CSS, développement rapide | | UI Library | shadcn/ui | - | Composants Radix UI accessibles et personnalisables | | Icons | Lucide React | 0.562.0 | Icônes SVG légères et cohérentes | | Animation | Framer Motion | 12.26.2 | Animations fluides et performantes | | Pull-to-refresh | react-pull-to-refresh | 2.0.1 | UX mobile native pour rafraîchir | ### State Management | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | State Store | Zustand | 5.0.10 | State management léger et simple | | Data Fetching | React Query (@tanstack/react-query) | 5.90.18 | Cache, sync, et gestion des appels API | ### Database & ORM | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Database | SQLite | better-sqlite3 12.6.2 | Base légère pour développement | | ORM | Drizzle ORM | 0.44.7 | ORM moderne type-safe avec SQL pur | | Migrations | Drizzle Kit | 0.31.8 | Génération de migrations et schéma | ### Visualization | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Charts | Recharts | 3.6.0 | Graphiques React déclaratifs | | Advanced Viz | D3.js | 7.9.0 | Visualisations complexes et personnalisées | | Types | @types/d3 | 7.4.3 | Typage TypeScript pour D3 | ### Authentication | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Auth | better-auth | 1.4.14 | Solution d'authentification moderne pour Next.js | | Password Hashing | bcryptjs | 3.0.3 | Hashage sécurisé des mots de passe | ### Notifications | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Web Push | web-push | 3.6.7 | Notifications push web standard W3C | | Types | @types/web-push | 3.6.4 | Typage TypeScript | ### Validation & Forms | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Validation | Zod | 4.3.5 | Validation de schéma avec TypeScript | ### Messaging | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Redis Client | ioredis | 5.9.2 | Client Redis pour pub/sub et cache | ### Utilities | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Class Variance | class-variance-authority | 0.7.1 | Gestion des variantes de composants | | clsx | clsx | 2.1.1 | Concaténation de classes conditionnelle | | tailwind-merge | tailwind-merge | 3.4.0 | Fusion intelligente de classes Tailwind | ### Development Tools | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Linter | ESLint | 9 | Linting JavaScript/TypeScript | | Testing | Vitest | 4.0.17 | Framework de test rapide et moderne | | Testing Library | @testing-library/react | 16.3.1 | Tests de composants React | | Testing Library | @testing-library/user-event | 14.6.1 | Simulation d'interactions utilisateur | | Testing Library | @testing-library/jest-dom | 6.9.1 | Matchers DOM pour Jest/Vitest | | Happy DOM | happy-dom | 20.3.1 | Léger DOM implementation pour tests | | JSDOM | jsdom | 27.4.0 | DOM implementation pour tests | ### Architecture Pattern **Type:** Component-based / App Router (Next.js 16) **Caractéristiques:** - App Router avec Server Components - Client Components pour l'interactivité - API Routes pour backend intégré - Middleware pour authentification et routing - Streaming et Suspense pour UX optimisée **Structure:** - `src/app/` - App Router (routes, layouts, pages) - `src/components/` - Composants réutilisables - `src/services/` - Services API et logique métier - `src/hooks/` - React Hooks personnalisés - `src/stores/` - Zustand stores - `src/lib/` - Utilitaires et helpers --- ## Partie 2: Backend (backend/) ### Framework & Server | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Framework | FastAPI | 0.128.0 | API moderne, rapide, avec documentation auto | | ASGI Server | Uvicorn | 0.30.0 | Server ASGI haute performance | | Language | Python | 3.11+ | Version moderne avec typage amélioré | ### Database & ORM | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | ORM | SQLAlchemy | 2.0.45 | ORM Python mature et flexible | | Migrations | Alembic | 1.13.0 | Outil de migration de base de données | ### Validation & Settings | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Validation | Pydantic | 2.7.0 | Validation de données avec Python | | Settings | Pydantic Settings | 2.3.0 | Gestion des variables d'environnement | | Email Validation | email-validator | 2.1.0 | Validation d'adresses email | ### Data Scraping | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Twitter API | tweepy | 4.14.0 | Client Python pour l'API Twitter v2 | | Reddit API | praw | 7.8.1 | Python Reddit API Wrapper | | RSS Parser | feedparser | 6.0.11 | Parser RSS/Atom feeds | ### Machine Learning | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Sentiment Analysis | vaderSentiment | 3.3.2 | Analyse de sentiment pour texte social media | | NLP | textblob | 0.17.1 | Traitement du langage naturel | ### Message Queue | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | RabbitMQ Client | pika | 1.3.2 | Client AMQP pour RabbitMQ | ### Development Tools | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Linter | flake8 | 7.1.0 | Linting PEP 8 | | Formatter | black | 24.8.0 | Formatting Python automatique | | Testing | pytest | 8.3.3 | Framework de tests Python | ### File Upload | Catégorie | Technologie | Version | Justification | |-----------|-------------|---------|--------------| | Multipart | python-multipart | 0.0.9 | Support de formulaire multipart | ### Architecture Pattern **Type:** REST API / Service-oriented **Caractéristiques:** - API RESTful avec FastAPI - Documentation auto-générée (Swagger/OpenAPI) - Async/await pour performances - Dependency injection - Middleware pour auth, CORS - Background tasks avec Celery/RabbitMQ **Structure:** - `app/api/` - Endpoints REST - `app/models/` - Modèles SQLAlchemy - `app/schemas/` - Schémas Pydantic - `app/services/` - Business logic - `app/ml/` - Services ML - `app/scrapers/` - Scrapers (Twitter, Reddit, RSS) - `app/queues/` - Gestion RabbitMQ - `app/workers/` - Workers asynchrones - `app/middleware/` - Middleware (auth, CORS) --- ## Architecture Globale ### Pattern de Communication **Frontend ↔ Backend:** - Protocol: REST API (HTTP/HTTPS) - Format: JSON - Base URL: `http://localhost:8000` (dev) ### Architecture de Données **Phase 1 (Développement):** - Frontend Database: SQLite (chartbastan.db) - Backend Database: SQLite partagée - ORM: Drizzle (frontend) + SQLAlchemy (backend) **Phase 2+ (Production):** - Database: PostgreSQL - Cache: Redis (optionnel) - ORM: Drizzle + SQLAlchemy ### Asynchronous Processing **RabbitMQ:** - Message broker pour tâches asynchrones - Workers: scraping, analyse de sentiment, prédictions - Découplage frontend/backend --- ## Dépendances Externes ### APIs Tierces **Frontend:** - Twitter API (accès direct, si configuré) - Reddit API (accès direct, si configuré) **Backend:** - Twitter API v2 (via tweepy) - Reddit API (via praw) ### Infrastructure **Développement:** - SQLite (base de données locale) - RabbitMQ (optionnel, pour workers) **Production (recommandé):** - PostgreSQL (base de données) - Redis (cache, sessions) - RabbitMQ (message queue) - VPS (hébergement) --- ## Sécurité ### Frontend - better-auth pour authentification - bcryptjs pour hashage des mots de passe - Validation Zod des données d'entrée ### Backend - Authentification JWT (via better-auth) - Validation Pydantic - CORS configuré - Middleware de sécurité --- ## Performance ### Frontend Optimizations - Next.js App Router (Server Components) - Streaming et Suspense - Code splitting automatique - Optimisation d'images - Cache React Query ### Backend Optimizations - FastAPI async/await - SQLAlchemy async operations - Connection pooling - RabbitMQ pour tâches lourdes --- ## Monitoring & Logging ### Frontend - Logging via console (développement) - Error tracking (à implémenter en production) ### Backend - Logging structuré Python - Error handling centralisé - Monitoring (à implémenter en production) --- ## Testing ### Frontend Tests - Vitest (framework de test) - React Testing Library (composants) - User Event (interactions) - Type checking (TypeScript) ### Backend Tests - pytest (framework de test) - Tests unitaires et d'intégration - Couverture de code (à implémenter) --- ## CI/CD ### Frontend - ESLint - TypeScript type-check - Next.js build - Tests Vitest ### Backend - flake8 (linting) - black (formatting) - pytest (tests) --- ## Résumé de la Stack **Frontend:** - Framework: Next.js 16.1.3 + TypeScript 5 - UI: Tailwind CSS v4 + shadcn/ui - State: Zustand + React Query - Database: Drizzle ORM + SQLite - Visualization: D3.js + Recharts **Backend:** - Framework: FastAPI 0.128.0 + Python 3.11+ - ORM: SQLAlchemy 2.0.45 + Alembic - Scraping: tweepy + praw + feedparser - ML: vaderSentiment + textblob - Queue: RabbitMQ (pika) **Infrastructure:** - Database: SQLite (dev) → PostgreSQL (prod) - Message Queue: RabbitMQ - API Docs: Swagger/OpenAPI auto-généré Cette stack est moderne, performante et bien adaptée aux besoins de l'application.