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) |
No comments to display
No comments to display