Skip to main content

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