⚠️ Ce dépôt est privé — Axium Hub est un produit en développement actif.
Ce README présente l'architecture, les fonctionnalités et les décisions techniques du projet.
| Accueil | Organisation |
![]() |
![]() |
| Playbook | Lineups interactifs |
![]() |
![]() |
| Team Agenda | Match History |
![]() |
![]() |
Les équipes esports compétitives jonglent entre Discord, Google Sheets, et des fichiers partagés pour gérer leurs stratégies, leur calendrier, et leur historique de matchs. Axium Hub centralise tout ça en une seule plateforme dédiée, construite par des joueurs pour des joueurs.
| Module | Description |
|---|---|
| 🏢 Organisation | Gestion multi-équipes avec membres, rôles et permissions granulaires |
| 📖 Playbook | Banque de stratégies organisée par carte (16 maps Valorant) |
| 🗺️ Lineups | Carte interactive pour placer et visualiser les lineups par agent |
| 📅 Team Agenda | Calendrier d'équipe avec disponibilités des joueurs, export Google Calendar |
| ⚔️ Match History | Historique complet des matchs avec filtres avancés (carte, composition, adversaire) |
| 📹 VOD Review | Lien vers les VODs associées à chaque match |
| 📣 Annonces | Système d'annonces internes par équipe |
| 🔔 Discord Webhooks | Notifications automatiques vers les serveurs Discord de l'équipe |
Axium Hub est construit selon les principes du Domain-Driven Design (DDD) avec une Clean Architecture stricte.
axium-hub/
├── identity/ # Authentification, utilisateurs, sessions
├── organization/ # Orgs, équipes, membres, permissions
├── strategy/ # Playbook, stratégies par carte
├── lineup/ # Lineups interactifs (carte + agents)
├── match/ # Historique de matchs, séries, scores
├── vod/ # Gestion des vidéos de review
├── scheduling/ # Calendrier, événements, disponibilités
└── gamedata/ # Intégration Valorant API (agents, maps)
Les bounded contexts communiquent exclusivement via un InMemoryEventBus maison — aucun couplage direct entre domaines.
[identity] → UserRegistered → [organization] → MemberAdded → [scheduling]
Frontend
React 19 · React Router DOM v7 · Tailwind CSS v4 · Vite 7 · Context API
Déploiement : Vercel (SPA)
Backend
Node.js (ESM) · Express v5 · Awilix (IoC / injection de dépendances)
Auth.js · Multer · Déploiement : Railway (API REST)
Base de données
PostgreSQL · Prisma ORM v7 · Supabase (DB + Storage)
Tests
Vitest · Supertest
Un des aspects les plus complexes du projet — le système d'auth est complet et production-ready :
- JWT + tokenVersion — invalidation côté serveur sans liste noire
- 2FA TOTP via
otplib(compatible Google Authenticator) - Vérification email obligatoire à l'inscription (nodemailer)
- Verrouillage progressif après tentatives échouées : 5 → 15 → 30 → 60 min
- Alertes IP par géolocalisation — notification si connexion depuis un nouvel emplacement
- bcryptjs pour le hashage des mots de passe
| Service | Usage |
|---|---|
| Valorant API | Sync des agents, maps, et données de jeu |
| Google Calendar API | Export de l'agenda d'équipe |
| Discord Webhooks | Notifications automatiques (matchs, annonces) |
| ip-api.com | Géolocalisation des connexions pour alertes de sécurité |
| Supabase Storage | Stockage des assets (logos, VODs) |
Architecture découplée — frontend et backend sont déployés indépendamment :
[Client] → Vercel (SPA React)
↓ proxy via vercel.json
[API] → Railway (Express v5)
↓
[DB] → Supabase (PostgreSQL)
Projet développé à deux dans le cadre du programme de génie logiciel de l'ÉTS Montréal.
| Rôle | |
|---|---|
| Sacha Burelle | Co-fondateur · Full-stack · Architecture |
| Wassim Ouali | Co-fondateur · Full-stack |
Construit avec passion par des joueurs, pour des joueurs.





