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
- http://localhost:7001 (par defaut)
- ou http://localhost:7000 si
APP_PORT=7000
3-bis) Verifier l'API (etape 1 migration)
- http://localhost:7002/health
- http://localhost:7002/api/catalog/summary
- http://localhost:7002/api/catalog/tree
- http://localhost:7001/api/catalog/full (via proxy Nginx frontend)
4) Arreter
docker compose down
Utilisation rapide
- Ajoute une marque + une console dans la section "Plateformes et consoles".
- Selectionne une console.
- Ajoute tes jeux via le formulaire.
- Utilise
Editerpour completer/modifier une fiche (ex: ajouter l'editeur plus tard). - 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 + dben place - Etape 2: schema SQL applique automatiquement au demarrage API
- tables:
brands,consoles,games - trigger
updated_atsurgames - endpoints de lecture pour validation:
summaryettree
- tables:
- Etape 3: frontend lit l'API (
/api/catalog/full) avec fallbacklocalStoragesi 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
- POST
- Etape 5: migration des donnees existantes
localStorage -> DB- POST
/api/catalog/import - bouton UI
Migrer localStorage vers DB - deduplication:
console + titre + annee
- POST
- Etape 6: backup/restauration locale JSON
- GET
/api/backup/export - POST
/api/backup/restore(modesmergeoureplace) - snapshot auto en base avant restore
replace(backup_snapshots) - actions accessibles dans le panneau lateral
Outils
- GET
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 -> NINTENDOPS1/PS2/PS3/PS4/PS5 -> SONYXBOX 360 -> MICROSOFT
Licence
Projet prive personnel.
Description
Languages
JavaScript
74.9%
Python
9.1%
CSS
7.8%
HTML
7.7%
Dockerfile
0.5%