Architecture technique
Architecture

Architecture

Schéma haut niveau

                ┌────────────────────────────────────────────────────────┐
                │                       nginx :80                        │
                │  zelhay-host.fr  admin.*  game.*  pro.*  console.*  doc.*  │
                └─────┬───────────────┬─────────┬───────┬──────────┬─────┘
                      │               │         │       │          │
                      ▼               ▼         ▼       ▼          ▼
                 vitrine          espace      panel    pro      doc
                 (Next.js)        client      Game    vitrine  (Nextra)
                                  (Next.js)  (Next.js)
                                      │         │
                                      └────┬────┘

                                      backend NestJS (API)

        ┌────────────────────┬─────────────┼─────────────┬──────────────┐
        ▼                    ▼             ▼             ▼              ▼
   PostgreSQL          Proxmox API   Pterodactyl     Stripe        SMTP
                                                                  (mail)

Frontends

Tous les frontends sont des Next.js App Router :

  • Vitrine : pages publiques (offres, parrainage, légaux). SSR pour le SEO. Lit /api/public/settings au boot pour les bannières/paramètres dynamiques.
  • Espace client : dashboard, serveurs, vRack, facturation, tickets. Authentifié.
  • Panel Game : UI dédiée aux serveurs de jeux ; relaie l'API Client de Pterodactyl.
  • Pro : vitrine commerciale Pro (anti-DDoS, SLA). Thème distinct (cookie zh_pro_theme).
  • Console série : terminal xterm.js connecté via WebSocket au tty série du VPS (Proxmox).
  • Doc : ce site (Nextra + MDX, statique).

Backend (NestJS)

Modules orientés feature :

  • auth — login, register, JWT, reset password, vérification SIRET (base Sirene).
  • client — endpoints client-* : commande, VPS, vRack, billing, tickets, Pro.
  • public — endpoints non authentifiés (offres publiques, settings).
  • wallet — recharge, débit, historique.
  • invoices — génération PDF + Factur-X + UBL.
  • einvoicing — connecteur vérification SIRET / facturation électronique.
  • tickets / notifications — support et notifs in-app + e-mail.
  • proxmox — wrapper API Proxmox VE.
  • pterodactyl — wrappers Application + Client API.
  • game — provisioning et pilotage Game.
  • nodes — pool de nœuds Proxmox (capacité, score).
  • plans — catalogue + capacités résiduelles.
  • promo — codes promo.
  • crypto — utilitaires AES-256-GCM (chiffrement secrets).
  • mail — templates stockés en base + transporteur SMTP.
  • console — proxy WebSocket vers la console série.
  • ip-scan — vérification disponibilité IP publiques.

Realtime

WebSockets authentifiés par le cookie JWT :

  • Stats live VPS : push CPU/RAM/Net toutes les 5 s (le backend interroge Proxmox une seule fois et fan-out).
  • Console série : proxy bidirectionnel xterm ↔ Proxmox.
  • Notifications : push in-app.

Caches

  • Cache mémoire 30 s pour les settings publics (réduit la pression DB).
  • Stats Proxmox agrégées une fois puis diffusées.