Contexte
CS2 Arbitrage Hub est une application d’observation des marchés de skins Counter-Strike 2. Elle normalise les données disponibles et distingue les annonces, les ventes réalisées, les estimations et les calculs de profit.
Elle ne réalise aucun achat ni échange. La documentation prévoit un accès privé.
Objectif
Rassembler des observations de plusieurs sources et les comparer en conservant leur provenance, leur devise et leur date. Une donnée absente ou non vérifiée doit rester identifiable dans l’interface.
Architecture
L’interface Next.js communique avec une API Python FastAPI. Celle-ci valide les données, interroge les adaptateurs de marchés et utilise PostgreSQL pour conserver les observations. Docker Compose décrit l’exécution de ces trois services.
Le navigateur ne reçoit pas les secrets des fournisseurs. Les migrations Alembic suivent l’évolution du schéma de données.
Technologies
- Python / FastAPI : API, validation et services de collecte.
- PostgreSQL, SQLAlchemy et Alembic : stockage, modèles et migrations.
- Next.js / TypeScript : interface, filtres et proxy vers l’API.
- Docker Compose : configuration des services et de leurs réseaux.
- Pytest, Ruff, Mypy et Vitest : outils de validation présents dans le dépôt.
Difficultés rencontrées
Les fournisseurs n’exposent pas les mêmes types de données. Une annonce active, un agrégat de prix et une vente réalisée ne sont pas interchangeables. Il faut également gérer les sources indisponibles, l’ancienneté des observations et les conversions de devises incomplètes.
Solutions mises en place
- Adaptateurs séparés pour normaliser les réponses des fournisseurs.
- Conservation de la provenance, du type et de la date des observations.
- Modes LIVE et DEMO distincts, sans remplacement silencieux par des données fictives.
- Données de démonstration explicitement étiquetées et isolées dans le stockage.
- Calculs décimaux côté Python et base de données ; références de change identifiées.
- Secrets configurés côté serveur et paramètres d’exploitation documentés.
Résultat
Le dépôt documente un scanner paginé, une liste de suivi persistante, des observations de marchés et un suivi de l’état des sources. Le projet continue d’évoluer ; certaines intégrations nécessitent encore une validation en conditions réelles.
La présence d’une fonctionnalité dans le code ne signifie pas qu’elle est activée en production. Aucune démonstration publique n’est liée à cette fiche.
Compétences acquises
- Séparer interface, API, stockage et intégrations externes.
- Conserver des données traçables et rendre leurs limites visibles.
- Structurer les validations, migrations et tests d’une application.
- Documenter la configuration, l’exploitation et les restrictions d’accès.
Captures et schémas
Des captures de l’interface et un schéma simplifié restent à préparer. Les captures devront identifier leur mode de données et être nettoyées avant publication.
Code et ressources
Cette fiche s’appuie sur le README du projet et sa documentation d’architecture, consultés le 20 septembre 2026.