Skip to content

Repository files navigation

🎮 MyGameDB

Gestionnaire de collection de jeux vidéo, avec backend local et synchronisation temps réel entre tous tes appareils.

Table des Matières

  1. Journal des Mises à Jour
  2. Nouveautés v3.1.0 — Prix, provenance et notes
  3. Fonctionnalités Principales
  4. Index du Projet
  5. Démarrage Rapide
  6. Mise en Production
  7. Architecture Complète
  8. Stack Technique
  9. API Endpoints
  10. Base de Données
  11. Configuration
  12. Troubleshooting

Nouveautés v3.1.0 — Prix, provenance et notes

  • Combien tu l'as payé, à qui, et tout ce dont tu veux te souvenir : chaque période de possession (console comme jeu) accepte désormais un prix d'achat, un prix de vente, l'interlocuteur (particulier, grande surface, magasin spécialisé, autre) et un champ libre pour les infos complémentaires — tout est optionnel.
  • Comme ces infos vivent sur les périodes, une console revendue puis rachetée garde l'historique complet de chaque cycle : ce que tu avais payé la première fois n'est jamais écrasé.
  • Bilan gain/perte automatique dès que l'achat et la revente sont renseignés, et total dépensé par console dans la vue "🗄️ Mon matériel".

(v3.0.0 : multi-plateforme, synchronisation Steam et identité visuelle — voir CHANGELOG.md pour le détail complet, y compris la v2.0.0.)

Fonctionnalités Principales

  • Organisation par Famille (ex: Nintendo) → Console/Plateforme (ex: Switch, Steam, Mobile) → Jeu.
  • Un jeu peut être possédé sur plusieurs plateformes (ex: un jeu à la fois sur PC et sur mobile) : chaque plateforme a ses propres heures jouées et statut, la fiche jeu (titre, note, notes, jaquette) reste unique et partagée.
  • Suivi des heures jouées, du statut (en cours / terminé), de la note, des styles/genres (tags combinables).
  • Jaquettes et screenshots par jeu (stockés en fichiers, pas en base64).
  • Dates de possession (par jeu+plateforme, et par console) avec type d'acquisition (achat, prêt, location), et pour les consoles : modèle et numéro de série par période — utile pour distinguer une console rachetée dans une variante différente. Analyse "styles de jeu par tranche d'âge" si tu renseignes ta date de naissance.
  • Prix et provenance par période de possession (optionnel) : prix d'achat, prix de vente, à qui / chez qui (particulier, grande surface, magasin spécialisé, autre) et champ libre pour les infos complémentaires. Le bilan gain/perte s'affiche dès que l'achat et la revente sont connus.
  • Vue "Mon matériel" : toutes tes consoles groupées par famille avec leur historique complet de possession (dates, modèle, numéro de série, prix, provenance) et le total dépensé par console.
  • Synchronisation automatique de ta bibliothèque Steam (optionnelle) : import et mise à jour périodique des jeux possédés et du temps de jeu, sans jamais écraser une correction manuelle (les heures ne peuvent qu'augmenter).
  • Export de l'inventaire en Markdown (.md) ou de la base complète en .sqlite, import d'une sauvegarde .sqlite.
  • Recommandations IA (Gemini, Claude, ChatGPT ou Mistral au choix) : 9 jeux personnalisés répartis en 3 tiers — 🔥 Cœur de Cible (valeurs sûres), 🌤️ Périphérique (qui testent tes limites), 🌀 Exotique Hors Cadre (rupture assumée) — avec boucle de feedback et affinement itératif.
  • Auto-détection de style d'un jeu via IA, à partir de son titre.
  • Synchronisation temps réel multi-appareils via WebSocket.

Index du Projet

Voir la section "Arborescence du Projet" dans CLAUDE.md pour la vue d'ensemble complète et toujours à jour du dépôt. Résumé :

backend/    # API REST + WebSocket + logique métier (Node.js/Express)
frontend/   # Client web (HTML/CSS/JS vanilla, aucun build step)
storage/    # Jaquettes et screenshots uploadés (fichiers, jamais en base)
scripts/    # Scripts d'initialisation et de migration de la base
bdd/        # Données réelles de l'utilisateur (jamais commitées)
docs/       # Documentation technique (API, WebSocket, architecture)

Démarrage Rapide

Prérequis : Docker et Docker Compose.

# 1. Copier le template de configuration
cp .env.example .env

# 2. (Optionnel) Renseigner une ou plusieurs clés API LLM dans .env
#    LLM_API_KEY_GEMINI=... / LLM_API_KEY_CLAUDE=... / etc.

# 3. Lancer l'application
docker compose up -d

# 4. Ouvrir dans un navigateur
open http://localhost:3000

L'application tourne désormais en arrière-plan (restart: unless-stopped). Pour l'arrêter : docker compose down. Pour voir les logs : docker compose logs -f.

Mise en Production

Ce projet est conçu pour un usage local personnel (un service qui tourne en permanence sur ta propre machine, accessible sur ton réseau local) — il n'y a pas de déploiement cloud prévu ni de configuration TLS/domaine. Pour l'exposer au-delà de ton réseau local, ajoute toi-même un reverse proxy avec authentification (hors du périmètre de ce projet).

Architecture Complète

Voir docs/architecture.md pour le schéma complet des flux (conteneur unique servant API + WebSocket + fichiers statiques, volumes Docker pour la base et les uploads, appels sortants vers les fournisseurs LLM).

Stack Technique

Composant Choix
Runtime Node.js 22 LTS
Framework HTTP Express 4.x
Base de données SQLite (better-sqlite3)
Temps réel WebSocket (ws)
Frontend HTML/CSS/JS vanilla, Tailwind CDN, aucun build step
Conteneurisation Docker + Docker Compose (conteneur unique)

Détails et justifications dans backend/README.md.

API Endpoints

Référence complète : docs/api.md.

Base de Données

SQLite, fichier unique (bdd/collection.sqlite, monté en volume Docker). Schéma défini dans backend/src/db/schema.sql. Voir backend/src/db/README.md.

Configuration

Toute la configuration passe par le fichier .env (copié depuis .env.example) :

Variable Rôle Obligatoire
PORT Port d'écoute Non (défaut 3000)
DB_PATH Chemin du fichier SQLite Non (défaut fourni par Docker Compose)
UPLOADS_PATH Dossier des jaquettes/screenshots Non (défaut fourni par Docker Compose)
LLM_API_KEY_GEMINI Clé API Google Gemini Non — requis seulement pour utiliser ce fournisseur
LLM_API_KEY_CLAUDE Clé API Anthropic Claude Non — idem
LLM_API_KEY_OPENAI Clé API OpenAI Non — idem
LLM_API_KEY_MISTRAL Clé API Mistral AI Non — idem
STEAM_API_KEY Clé API Steam (steamcommunity.com/dev/apikey) Non — requis seulement pour la synchronisation Steam
STEAM_ID SteamID64 (identifiant numérique à 17 chiffres, pas le pseudo) Non — idem
STEAM_SYNC_INTERVAL_HOURS Fréquence de la synchronisation automatique Non (défaut 6h)

Où obtenir une clé API :

Fournisseur Où l'obtenir
Google Gemini aistudio.google.com/apikey — offre un tier gratuit généreux
Anthropic Claude console.anthropic.com
OpenAI ChatGPT platform.openai.com/api-keys
Mistral AI console.mistral.ai

⚠️ Après avoir modifié .env, redémarre le conteneur (docker compose restart) pour que la nouvelle clé soit prise en compte — elle n'est lue qu'au démarrage du serveur, jamais stockée en base de données ni renvoyée par l'API.

Dans l'application, le bouton ⚙️ Configurer l'IA permet uniquement de choisir le fournisseur actif et le modèle — pas la clé, qui reste toujours côté fichier .env.

Troubleshooting

  • Le conteneur ne démarre pas : docker compose logs pour voir l'erreur exacte.
  • Mes données de l'ancienne version (fichier MyGameDB_Local_v5.html) ont disparu : elles n'ont pas disparu, mais elles vivaient dans le localStorage de ton navigateur — la nouvelle version utilise une vraie base sur disque. Si besoin, exporte l'ancienne base depuis l'ancien fichier HTML puis importe-la via 📂 Importer (.sqlite) dans la nouvelle version.
  • Aucune clé API configurée pour un fournisseur : voir la section Configuration ci-dessus.
  • Pour les problèmes spécifiques au backend, au frontend ou à la base de données, voir le README du dossier concerné (chacun a sa propre section Troubleshooting).

Licence

Ce projet est distribué sous licence CC BY-NC 4.0 (Creative Commons Attribution - Pas d'Utilisation Commerciale). Utilisation et modification libres et gratuites, à condition de créditer l'auteur original ; toute utilisation commerciale est interdite sans accord préalable.

About

Gestionnaire local de collection de jeux vidéo : multi-plateforme, synchro Steam, suivi du temps de jeu et des prix d'achat/revente. Node.js + SQLite, sans build step.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages