Skip to main content

Stack technique

Stack technique

Dernière mise à jour : 2026-05-10

Runtime

Composant Version Rôle
Node.js 22 (image node:22-bookworm-slim) Runtime backend
Vue 3 3.5.31 Framework frontend
Tailwind CSS 4.2.2 (@tailwindcss/vite) Utility-first CSS
Vite (via @tailwindcss/vite) Bundler frontend
Pinia 3.0.4 State management
Vue Router 5.0.4 Routing client

Backend principal

Lib Version Rôle
Hono 4.7.6 Web framework (routes + middleware + SSE streaming)
@hono/node-server 1.14.1 Adapter HTTP Node
Drizzle ORM 0.44.2 ORM SQLite type-safe
better-sqlite3 11.9.1 Driver SQLite synchrone (rapide, low-overhead)
Zod 3.24.4 Validation schémas
Argon2 0.43.0 Password hashing
ssh2 1.16.0 Client SSH (pool vers VM oracle)
pdfjs-dist 4.10.38 Extraction texte PDF
sharp 0.34.5 Resize cache images cartes
cheerio 1.2.0 HTML parsing (méta-game scraping)
nodemailer 8.0.5 SMTP optionnel
stream-chain + stream-json 3.6.1 / 1.9.1 Streaming JSON parser (Claude SSH)
tsx 4.19.4 TS executor (dev + scripts)
uuid 11.1.0 UUIDs partout

Stockage / persistance

Composant Rôle
SQLite (better-sqlite3) Users, games, questions, feedbacks
Drizzle Kit Migrations
Qdrant Vector DB (1024 dims, dense + BM25 sparse) — une collection par jeu (rules_<slug>) + collections cartes par TCG (magic-cards, lorcana-cards, etc.)
Filesystem (/app/pdfs, /app/data) PDFs uploadés, PNG rendus, caches JSON (OCR / contextual / conflicts), data sources cartes

ML / RAG

Composant Rôle
TEI (Text Embeddings Inference) Service HTTP local sur RTX 3060 — modèle bge-m3 (1024 dim dense + sparse BM25)
TEI Reranker Service HTTP local — modèle bge-reranker-v2-m3 cross-encoder
Claude Code CLI (Anthropic) Génération streamée via SSH vers VM oracle
Modèle Haiku claude-haiku-4-5-20251001 — HyDE, decompose-query, conflit detect, classify intent
Modèle Opus (par défaut) — réponses RAG, deckbuilding

TCG (sources de données)

TCG Source
MTG Scryfall bulk JSON (téléchargé) + traduction Haiku
Lorcana LorcanaJSON.org (MIT, bulk JSON FR/EN)
FAB Package npm @flesh-and-blood/cards (bundlé dans l'image Docker)
Riftbound API Riot card-gallery (live JSON)
Terraforming Mars HTML parsing local + cards.json
Ark Nova Sprite sheets découpées + cards.json

Méta-game

Source TCG
17Lands API MTG (draft analytics)
MTGGoldfish (scrape) MTG (constructed metagame)
MTGTop8 (scrape) MTG (top 8 tournois)
Mobalytics (scrape) Riftbound (tier list)
RiftboundStats (API) Riftbound (tournois)
fabtcg.com (scrape) FAB (tournois officiels LSS)
BoardGameGeek XML v2 Tous (forums Rules)

Infra

Composant Rôle
Unraid OS hôte des containers
Docker Containerisation (image multi-stage)
Gitea (gitea.thymon.fr) Git + CI Runners + registry
Nginx Proxy Manager (NPM) Reverse proxy + Let's Encrypt sur rules.thymon.fr
VM SSH oracle Exécute Claude Code CLI (compte dédié least-privilege)
RTX 3060 TEI bge-m3 + reranker (GPU)