# Sokko G

Webapp React locale pour préparer et accompagner des sessions gaming sur second écran.

Sokko G propose des toolboxes modulaires stockées dans le navigateur, ainsi que des pages de guides de jeu maintenues dans le dépôt. Aucune donnée utilisateur n’est envoyée côté serveur.

## Fonctionnalités

- Toolboxes locales stockées dans `localStorage`.
- Outils disponibles : bloc notes, checklist avec quantités, screenshots.
- Import/export d’une toolbox.
- Import/export global de toutes les toolboxes.
- Association locale entre une page jeu et une toolbox.
- Panneau latéral redimensionnable sur les pages jeux.
- Suivi et contrôle du quota localStorage.
- Pages de guides de jeu éditables via JSON.

## Démarrage

```bash
npm run dev
```

Par défaut, le site démarre sur `http://localhost:5173`.

Pour générer la version statique de production :

```bash
npm run build
```

Le build est généré dans `website/dist`.
`npm start` sert cette version statique avec `server.mjs`.

## Configuration

Le serveur lit automatiquement un fichier `.env` à la racine du projet.

```bash
cp .env.example .env
```

Exemple :

```env
PORT=5173
```

Le fichier `.env` est ignoré par git. Pour changer le port localement, modifier `PORT`.

## Vérifications

Avant un push ou une mise en ligne :

```bash
npm run check
```

Cette commande vérifie la configuration Node/Vite, lance les tests, puis exécute le build React.

## Contenu éditable

Les contenus maintenus à la main sont regroupés dans `website/public/data`.

| Fichier | Rôle |
| --- | --- |
| `website/public/data/site.json` | Textes généraux du site : home, navigation, sidebar, page toolboxes. |
| `website/public/data/games.json` | Liste des jeux affichés sur `/games` et contenus des cards jeux. |
| `website/public/data/mhwilds/monsters.json` | Données des monstres Monster Hunter Wilds. |
| `website/public/data/mhwilds/endemic_life.json` | Données de la faune Monster Hunter Wilds. |
| `website/public/data/mhwilds/i18n/fr.json` | Traductions françaises des données MHWilds. |
| `website/public/data/mhwilds/i18n/en.json` | Traductions anglaises des données MHWilds. |
| `website/public/data/toolbox-icons.json` | Manifeste des icônes SVG réutilisables. |

Les images publiques sont dans `website/public/static`.

## Pages jeux

Les pages jeux sont dans `website/src/features/games`.

- `website/src/features/games/GamesPage.jsx` : liste des jeux disponibles.
- `website/src/features/games/GameRoute.jsx` : route vers la page du jeu demandé.
- `website/src/features/games/mhwilds/` : vues et composants propres à Monster Hunter Wilds.

Pour ajouter un jeu :

- ajouter son entrée dans `website/public/data/games.json` ;
- créer son dossier dans `website/src/features/games/` si la page nécessite un rendu spécifique ;
- brancher sa route dans `website/src/features/games/GameRoute.jsx`.

## Outils de toolbox

Les outils de toolbox sont déclarés dans `website/src/features/toolboxes/modules/index.jsx`.
Chaque outil possède son propre fichier de composant :

- `website/src/features/toolboxes/modules/NotepadModule.jsx`
- `website/src/features/toolboxes/modules/ChecklistModule.jsx`
- `website/src/features/toolboxes/modules/ScreenshotsModule.jsx`
- `website/src/features/toolboxes/modules/LinksModule.jsx`
- `website/src/features/toolboxes/modules/CountersModule.jsx`

Pour ajouter ou maintenir un outil :

- créer son fichier dans `website/src/features/toolboxes/modules/` ;
- l’ajouter au registre `MODULE_COMPONENTS` dans `website/src/features/toolboxes/modules/index.jsx` ;
- garder les données persistées via les helpers de `website/src/main.jsx` tant que le stockage reste en localStorage.

## Structure

```text
.
├── DESIGN_SYSTEM.md
├── package.json
├── server.mjs
├── vite.config.js
├── tests/
└── website/
    ├── index.html
    ├── public/
    │   ├── data/
    │   └── static/
    └── src/
        ├── main.jsx
        ├── components/
        ├── features/
        │   ├── games/
        │   │   └── mhwilds/
        │   └── toolboxes/
        │       └── modules/
        └── styles/
            ├── _base.scss
            ├── _cards.scss
            ├── _games.scss
            ├── _home.scss
            ├── _icons.scss
            ├── _mhwilds.scss
            ├── _overlays.scss
            ├── _responsive.scss
            ├── _shell.scss
            ├── _tokens.scss
            ├── _toolboxes.scss
            └── main.scss
```

## Stockage local

Clés principales :

- `sokkog:toolboxes` : registre local des toolboxes.
- `sokkog:game-toolbox-links` : associations locales jeu -> toolbox.
- `sokkog:toolbox:{toolboxId}:module:{moduleId}` : données de chaque outil.
- `sokkog:drawer-width` : largeur du panneau latéral.

Le quota applicatif est contrôlé côté navigateur avant écriture. Les imports globaux simulent l’espace nécessaire avant de modifier les données locales.
