Beuz Video Game Collection

Application web simple pour gerer une collection de jeux video par plateforme et console.

Objectif

Centraliser ta collection dans une interface rapide a utiliser, evolutive, et facile a maintenir.

Fonctionnalites actuelles

  • Gestion des plateformes par marque (ex: SONY, MICROSOFT)
  • Gestion des consoles par marque (ajout libre)
  • Onglets dynamiques marque/console
  • Compteur visuel du nombre de jeux par console (bulle sur l'onglet)
  • Ajout de jeux avec champs:
    • titre
    • version
    • genre
    • editeur
    • double (oui/non)
    • annee
    • prix d'achat
    • cote estimee
    • etat
    • prete a
  • Edition d'une fiche existante
  • Suppression d'un jeu
  • Statut de pret (marquer prete/rendu)
  • Persistance locale via localStorage
  • Backend avec migration automatique du schema PostgreSQL (etape 2)

Stack technique

  • Frontend: HTML, CSS, JavaScript vanilla
  • Serveur web local: Nginx (conteneur Docker)
  • Backend API: Node.js (endpoint de sante pour migration progressive)
  • Base de donnees: PostgreSQL dediee a l'application
  • Orchestration: Docker Compose

Structure du projet

.
|- index.html
|- styles.css
|- app.js
|- Dockerfile
|- api/
|  |- Dockerfile
|  |- server.js
|- docker-compose.yml
|- .dockerignore
|- .env.example

Lancer en Docker

1) Configuration du port

Copie le fichier d'environnement:

cp .env.example .env

Par defaut:

APP_PORT=7001
API_PORT=7002
VG_DB_NAME=video_games
VG_DB_USER=video_games_user
VG_DB_PASSWORD=change_me

Tu peux mettre 7000 si ce port est libre sur ta machine.

2) Build et demarrage

docker compose up -d --build

3) Ouvrir l'application

3-bis) Verifier l'API (etape 1 migration)

4) Arreter

docker compose down

Utilisation rapide

  1. Ajoute une marque + une console dans la section "Plateformes et consoles".
  2. Selectionne une console.
  3. Ajoute tes jeux via le formulaire.
  4. Utilise Editer pour completer/modifier une fiche (ex: ajouter l'editeur plus tard).
  5. Consulte la bulle sur chaque onglet console pour voir le volume de jeux.

Git / Gitea

Le remote est configure en SSH via l'alias gitea-local (port 222).

Exemples:

git push
git pull

Evolutions prevues

  • Fiches de pret plus detaillees (date de sortie, date de retour)
  • Historique des prets
  • Statistiques de collection (total jeux, valeur totale, repartition par plateforme)
  • Export/import (CSV/JSON)
  • Sauvegarde distante (API/backend)

Etat migration base de donnees

  • Etape 1: architecture app + api + db en place
  • Etape 2: schema SQL applique automatiquement au demarrage API
    • tables: brands, consoles, games
    • trigger updated_at sur games
    • endpoints de lecture pour validation: summary et tree
  • Etape 3: frontend lit l'API (/api/catalog/full) avec fallback localStorage si API vide ou indisponible
  • Etape 4: ecriture active en base via API
    • POST /api/catalog/consoles
    • POST /api/catalog/games
    • PUT /api/catalog/games/:id
    • DELETE /api/catalog/games/:id
    • POST /api/catalog/games/:id/toggle-loan
  • Etape 5: migration des donnees existantes localStorage -> DB
    • POST /api/catalog/import
    • bouton UI Migrer localStorage vers DB
    • deduplication: console + titre + annee
  • Etape 6: backup/restauration locale JSON
    • GET /api/backup/export
    • POST /api/backup/restore (modes merge ou replace)
    • snapshot auto en base avant restore replace (backup_snapshots)
    • actions accessibles dans le panneau lateral Outils

Import Excel (COLLECTIONS.xlsx)

  • Script: scripts/import_collections_xlsx.py
  • Commande:
    • python3 scripts/import_collections_xlsx.py '/Users/beuz/Downloads/COLLECTIONS.xlsx' --api-base http://127.0.0.1:7001
  • Mapping consoles -> marques:
    • NES/SNES/Wii -> NINTENDO
    • PS1/PS2/PS3/PS4/PS5 -> SONY
    • XBOX 360 -> MICROSOFT

Licence

Projet prive personnel.

Description
No description provided
Readme 126 KiB
Languages
JavaScript 74.9%
Python 9.1%
CSS 7.8%
HTML 7.7%
Dockerfile 0.5%