# 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 ```text . |- 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: ```bash cp .env.example .env ``` Par defaut: ```env 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 ```bash docker compose up -d --build ``` ### 3) Ouvrir l'application - [http://localhost:7001](http://localhost:7001) (par defaut) - ou [http://localhost:7000](http://localhost:7000) si `APP_PORT=7000` ### 3-bis) Verifier l'API (etape 1 migration) - [http://localhost:7002/health](http://localhost:7002/health) - [http://localhost:7002/api/catalog/summary](http://localhost:7002/api/catalog/summary) - [http://localhost:7002/api/catalog/tree](http://localhost:7002/api/catalog/tree) - [http://localhost:7001/api/catalog/full](http://localhost:7001/api/catalog/full) (via proxy Nginx frontend) ### 4) Arreter ```bash 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: ```bash 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.