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

Vue d’ensemble de l’Application

  • L’application frontend est construite avec Nuxt.js 4
  • Elle utilise Vue 3.5.17 avec Composition API
  • L’interface est optimisée pour le trading et la gestion des positions
  • L’application est configurée en mode SPA (SSR désactivé)

Architecture Technique

Framework et Technologies

  • Nuxt.js 4.0.0 : Framework Vue.js avec configuration moderne
  • Vue 3.5.17 : Framework de composants réactifs
  • TypeScript 5.8.3 : Typage statique pour la robustesse
  • Tailwind CSS 4.1.10 : Framework CSS utilitaire moderne
  • Nuxt UI Pro 3.2.0 : Composants d’interface premium

Configuration Nuxt

  • SSR désactivé : Mode SPA pour les performances
  • Preset static : Génération de site statique
  • Devtools activés : Outils de développement intégrés
  • Compatibilité : Date de compatibilité 2024-07-11

Modules Nuxt

  • @nuxt/ui-pro : Composants d’interface utilisateur premium
  • @vueuse/nuxt : Utilitaires Vue.js et hooks réactifs
  • @nuxtjs/color-mode : Gestion des thèmes clair/sombre
  • @tanstack/vue-query : Gestion d’état et cache des données

Structure de l’Application

Organisation des Dossiers

  • components/ : Composants Vue réutilisables
  • pages/ : Pages de l’application avec routage automatique
  • layouts/ : Layouts et templates de base
  • composables/ : Logique métier réutilisable
  • types/ : Définitions TypeScript
  • utils/ : Fonctions utilitaires
  • assets/ : Ressources statiques (CSS, images, icônes)
  • server/ : API routes côté serveur
  • public/ : Fichiers publics accessibles directement

Composants Principaux

  • 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
  • UI Components : Composants d’interface basiques

Interface Utilisateur

Design System

  • Tailwind CSS : Classes utilitaires pour le styling
  • Nuxt UI Pro : Composants d’interface cohérents
  • Responsive Design : Interface adaptée à tous les écrans
  • Thème sombre/clair : Support des préférences utilisateur

Composants d’Interface

  • Cards : Conteneurs pour les informations de trading
  • Buttons : Actions utilisateur avec variantes
  • Forms : Saisie et validation des données
  • Tables : Affichage tabulaire des positions
  • Modals : Fenêtres modales pour les détails

Gestion des Données

État de l’Application

  • Vue Query : Gestion du cache et des requêtes API
  • Composables : Logique métier réactive
  • Props et Emits : Communication entre composants
  • Reactive References : État local des composants

Intégration API

  • TRPC : Client TypeScript pour les API
  • Base URL : https://api.poihunter.com
  • Websockets : Communication temps réel via Pusher
  • Error Handling : Gestion robuste des erreurs

Fonctionnalités Principales

Gestion des Positions

  • Affichage des positions : Liste des positions actives
  • Détails des positions : Informations complètes et métriques
  • Workflow visuel : Représentation graphique des étapes
  • Métriques en temps réel : PnL, gaps, pourcentages

Tableau de Bord

  • Vue d’ensemble : Résumé des performances
  • Graphiques : Visualisation des tendances
  • Alertes : Notifications importantes
  • Statistiques : Métriques de trading

Notifications

  • Pusher : Notifications temps réel
  • Alertes : Notifications importantes
  • Historique : Log des événements
  • Préférences : Configuration des notifications

Composants Spécifiques

SwingPositionCard

  • Affichage des données : Prix, montants, pourcentages
  • Statuts visuels : Indicateurs de progression
  • Actions utilisateur : Boutons et interactions
  • Modal de détails : Informations complètes

Workflow Component

  • Étapes visuelles : Représentation du processus
  • Indicateurs de statut : Progression des étapes
  • Interactions : Clics et navigation
  • Responsive : Adaptation mobile et desktop

Gestion des Erreurs

Validation des Données

  • Zod : Validation des schémas
  • TypeScript : Vérification des types
  • Error Boundaries : Gestion des erreurs de composants
  • Fallbacks : Affichage de secours en cas d’erreur

Gestion des États

  • Loading States : Indicateurs de chargement
  • Error States : Affichage des erreurs
  • Empty States : États vides et guides
  • Success States : Confirmations et succès

Performance et Optimisation

Optimisations Vue

  • Lazy Loading : Chargement différé des composants
  • Memoization : Mise en cache des calculs coûteux
  • Virtual Scrolling : Défilement optimisé pour les longues listes
  • Code Splitting : Division du bundle par routes

Optimisations CSS

  • PurgeCSS : Suppression des classes inutilisées
  • Critical CSS : CSS critique inline
  • Image Optimization : Optimisation automatique des images
  • Font Loading : Chargement optimisé des polices

Tests et Qualité

Tests Frontend

  • Vitest : Tests unitaires
  • Playwright : Tests e2e
  • Vue Test Utils : Tests des composants Vue
  • Testing Library : Tests centrés sur l’utilisateur
  • Coverage : Mesure de la couverture de tests

Qualité du Code

  • ESLint : Règles de qualité du code
  • Prettier : Formatage automatique
  • TypeScript : Vérification des types
  • Husky : Hooks Git pour la qualité

Déploiement et Build

Processus de Build

  • Nuxt Build : Construction de l’application
  • Static Generation : Génération des pages statiques
  • Asset Optimization : Optimisation des ressources
  • Bundle Analysis : Analyse de la taille du bundle

Configuration de Production

  • Environment Variables : Configuration par environnement
  • API Endpoints : URLs des services backend
  • CDN : Distribution des assets statiques
  • Monitoring : Suivi des performances en production

Accessibilité et UX

Standards d’Accessibilité

  • WCAG 2.1 : Conformité aux standards d’accessibilité
  • Navigation clavier : Support complet du clavier
  • Screen Readers : Compatibilité avec les lecteurs d’écran
  • Contraste : Ratios de contraste appropriés

Expérience Utilisateur

  • Design intuitif : Interface facile à utiliser
  • Feedback visuel : Retours immédiats des actions
  • Responsive : Adaptation à tous les appareils
  • Performance : Temps de réponse rapides

Intégrations

Services Externes

  • Pusher : Notifications temps réel
  • Analytics : Suivi des interactions utilisateur

APIs et Webhooks

  • REST APIs : Endpoints standards servi par trpc
  • WebSockets : Communication bidirectionnelle

Monitoring et Observabilité

Métriques Frontend

  • Core Web Vitals : Mesures de performance
  • Error Tracking : Suivi des erreurs JavaScript
  • User Analytics : Comportement des utilisateurs
  • Performance Monitoring : Temps de chargement et rendu

Logs et Debugging

  • Console Logs : Logs de développement
  • Error Reporting : Rapport d’erreurs automatique
  • Performance Profiling : Analyse des performances
  • User Feedback : Retours utilisateur intégrés

Sécurité Frontend

Protection Frontend

  • XSS Prevention : Protection contre les attaques XSS
  • CSRF Protection : Protection contre les attaques CSRF
  • Content Security Policy : Politique de sécurité du contenu
  • Input Validation : Validation côté client et serveur

Authentification

  • JWT Tokens : Gestion des sessions
  • OAuth : Authentification tierce
  • 2FA : Authentification à deux facteurs
  • Session Management : Gestion sécurisée des sessions

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