Architecture du Monorepo Remora
Cette spécification couvre l’architecture générale du monorepo Remora, un système de trading automatisé basé sur l’analyse technique et l’intelligence artificielle.Vue d’ensemble du Projet
- Le projet Remora est un monorepo de trading automatisé
- Il utilise une architecture serverless moderne avec SST (Serverless Stack)
- Le système combine analyse technique, IA et exécution automatisée des ordres
- L’objectif est de gérer des positions avec un système fiable pour des positions spot ou futures (swap)
Structure du Monorepo
Organisation des Packages
- Le package principal est “poihunter” basé sur SST
- Le projet utilise un système de workspaces npm avec “packages/*” afin de gérer le backend
- Le projet utilise avec “frontend/*” pour le développement des applications frontend
Packages Principaux
- packages/functions/ : Logique métier et API serverless
- packages/core/ : Fonctionnalités communes et utilitaires
- frontend/ : Applications utilisateur : app (dashboard et saas sont des templates fournies par NuxtUI Pro)
Configuration du Projet
- Le projet utilise TypeScript 5.6.3+ avec Node.js 20+
- ESLint et Prettier sont configurés pour la qualité du code
- Prisma 6.6.0 est utilisé pour la gestion de base de données
- SST 2.44.0 gère l’infrastructure serverless
Infrastructure Serverless
Stack SST Principal
- Le stack principal est défini dans “stacks/Stack.ts”
- L’infrastructure est déployée sur AWS avec CDK
- Les fonctions Lambda utilisent Node.js 18.x
- Une couche Prisma personnalisée est créée pour les dépendances
Composants Infrastructure
- API Gateway : Point d’entrée pour les API REST
- Lambda Functions : Logique métier serverless
- Cron Jobs : Tâches automatisées (nettoyage des bougies, rapports)
- Secrets : Gestion sécurisée des clés API (Binance, TAAPI, Pusher, Mailjet)
Configuration des Secrets
- BINANCE_API_KEY et BINANCE_API_SECRET pour l’exchange
- TAAPI_API_KEY pour l’analyse technique
- PUSHER_API_KEY et PUSHER_SECRET pour les notifications temps réel
- MAILJET_API_KEY et MAILJET_SECRET_KEY pour les emails
Architecture des Données
Base de Données
- MongoDB Atlas est utilisé comme base de données principale
- Prisma ORM gère la modélisation et les requêtes
- Le schéma est défini dans “prisma/schema.prisma”
- Chiffrement des champs sensibles avec PRISMA_FIELD_ENCRYPTION_KEY
Modèles de Données
- Candles : Données OHLCV des marchés
- SymbolPairs : Paires de trading supportées
- SwingPositions : Positions de trading avec gestion des ordres
- ExchangePairs : Configuration des exchanges par paire
- Timeframes : Intervalles de temps supportés
Système de Trading
Composants Principaux
- SwingPositionService : Gestion des positions de trading
- ExchangePositionService : Interface avec les exchanges
- CandleService : Collecte et traitement des données de marché
- TrendService : Analyse des tendances et signaux
Workflow de Trading
- Réception des signaux TradingView via webhooks
- Analyse des conditions de marché (LONG/SHORT)
- Placement automatique des ordres BUY1 (market) et BUY2 (limit)
- Gestion dynamique des take-profits et stop-loss
- Calcul en temps réel du PnL et des métriques
Frontend et Interface Utilisateur
Applications Frontend
- frontend/app/ : Application Nuxt.js 4 principale
Technologies Frontend
- Nuxt.js 4 : Framework Vue.js avec SSR désactivé
- Vue 3.5.17 : Framework de composants réactifs
- Tailwind CSS 4.1.10 : Framework CSS utilitaire
- Nuxt UI Pro : Composants d’interface utilisateur
- Vue Query : Gestion d’état et cache des données
Composants d’Interface
- SwingPositionCard : Affichage des positions de trading
- Workflow : Visualisation du workflow des positions
- Charts : Graphiques de prix et indicateurs techniques
- Notifications : Système d’alertes et notifications
Système de Tests
Tests Unitaires
- Vitest : Framework de tests pour Node.js
- test : Exécution des tests unitaires
- test:watch : Mode watch pour le développement
- typecheck : Vérification des types TypeScript
Tests E2E
- Playwright : Tests end-to-end pour l’interface utilisateur
- test:playwright : Exécution des tests E2E
Développement et Déploiement
Scripts de Développement
- dev : Démarrage de l’environnement de développement SST
- build : Construction du projet pour la production
- deploy : Déploiement sur AWS via SST
- remove : Suppression de l’infrastructure déployée
Qualité du Code
- lint : Vérification ESLint du code
- format : Formatage automatique avec Prettier
- check : Vérification complète (lint + typecheck)
- prisma : Génération du client Prisma et synchronisation DB
Monitoring et Observabilité
Logging et Traçage
- Sentry : Monitoring des erreurs et performance
- Logs structurés : Logs JSON pour l’analyse
- Métriques : Suivi des performances et KPIs
Notifications
- Pusher : Notifications temps réel dans l’interface
- Mailjet : Notifications par email
- Webhooks : Intégration avec TradingView et autres services
Sécurité et Conformité
Gestion des Secrets
- AWS Secrets Manager : Stockage sécurisé des clés API
- Chiffrement des champs : Données sensibles chiffrées en base
- IAM : Contrôle d’accès aux ressources AWS
Validation des Données
- Zod : Validation des schémas de données
- Sanitisation : Nettoyage des entrées utilisateur
- Rate Limiting : Protection contre les abus
Intégrations Externes
Exchanges de Trading
- Binance : Exchange principal pour le trading
- CCXT : Bibliothèque unifiée pour les exchanges
- API REST : Communication avec les exchanges
Services d’Analyse Technique
- TAAPI : Indicateurs techniques et signaux
- TradingView : Webhooks pour les signaux de trading
- Indicateurs personnalisés : Calculs de tendance et filtres
Performance et Scalabilité
Architecture Serverless
- Lambda Functions : Mise à l’échelle automatique
- API Gateway : Gestion de la charge
- CDN : Distribution des assets statiques
- Base de données : MongoDB Atlas avec réplication
Optimisations
- Layers Lambda : Réutilisation des dépendances
- Cache : Mise en cache des données fréquemment utilisées
- Batch Processing : Traitement en lot des opérations
- Async Processing : Traitement asynchrone des tâches lourdes
Maintenance et Opérations
Gestion des Versions
- Semantic Versioning : Versioning sémantique appliqué à tout le monorepo
- Changelog : Historique des modifications sur le monorepo
Mises à Jour
- Dependencies : Mise à jour des dépendances
- Security Patches : Correctifs de sécurité
- Feature Flags : Activation progressive des fonctionnalités
- Rollback : Retour en arrière en cas de problème
Tâches Automatisées
- Nettoyage des bougies : Suppression des données obsolètes
- Rapports quotidiens : Génération automatique des rapports
- Monitoring : Surveillance continue des systèmes
- Backup : Sauvegarde automatique des données
Gestion des Erreurs
- Retry Logic : Tentatives automatiques en cas d’échec
- Circuit Breaker : Protection contre les défaillances en cascade
- Fallback : Mécanismes de repli en cas de problème
- Alerting : Notifications automatiques des incidents
Documentation et Support
Génération de Documentation
- TypeDoc : Documentation automatique des API
- Mintlify : Documentation utilisateur
- Mermaid : Diagrammes d’architecture
- README : Documentation du projet
Support et Maintenance
- Linear : Gestion des tickets et tâches
- Cursor : Environnement de développement avec IA
- Changelog : Historique des modifications