# TaleSpire Symbiote

Application web simple pour gérer des personnages de JDR avec stockage local en JSON.

## Fonctionnalités

- création de compte
- connexion / déconnexion
- premier compte automatiquement MJ
- rôles MJ / joueur
- création de personnages
- fiche personnage
- caractéristiques
- inventaire
- ajout/suppression d'objets
- notes envoyées par le MJ
- popups envoyés par le MJ
- stockage dans des fichiers JSON
- mots de passe hashés avec bcrypt
- session JWT dans cookie HTTP-only

## Installation

Prérequis : Node.js 18+.

```bash
npm install
```

Copier `.env.example` vers `.env` si vous utilisez un gestionnaire qui charge les variables d'environnement, ou définir directement :

```bash
export PORT=3000
export JWT_SECRET="une-cle-tres-longue-et-aleatoire"
node server.js
```

Sinon :

```bash
npm start
```

Puis ouvrir :

http://localhost:3000

## Important en production

Définir impérativement une vraie variable `JWT_SECRET`.

Utiliser HTTPS.

Le dossier `data/` ne doit jamais être servi comme dossier web public. Dans cette application, Express ne sert que `public/`, donc `data/` reste privé.

## Stockage

- `data/users.json` : comptes
- `data/characters/*.json` : un fichier par personnage
- `data/notifications/*.json` : notifications d'un utilisateur

Le serveur utilise une écriture temporaire puis renommage pour diminuer les risques de fichier JSON partiellement écrit.

## Premier compte

Le premier compte créé reçoit le rôle `gm`.

Tous les comptes suivants reçoivent le rôle `player`.

## OVH

### VPS / serveur dédié

Installer Node.js, envoyer le projet, lancer :

```bash
npm install
NODE_ENV=production PORT=3000 JWT_SECRET="..." node server.js
```

Pour un vrai déploiement, utiliser PM2 ou systemd et mettre Nginx/Apache devant Node.js avec HTTPS.

### Hébergement mutualisé

Vérifier que l'offre autorise l'exécution permanente d'une application Node.js. Sinon, cette architecture nécessitera un VPS ou une offre compatible Node.js.

## Personnaliser la fiche

Les champs actuels sont définis dans `public/character.html` et les valeurs initiales dans `server.js`.

La prochaine étape peut être de remplacer ces champs par la fiche exacte de votre système Symbiote.

## HUD de partie

Le tableau de bord joueur inclut maintenant : portrait, PV, défense, ressource Symbiote, états/effets, raccourcis de compétences, inventaire rapide et dernières notes du MJ.


## Version V5
- Suppression de personnage par son propriétaire ou par le MJ.
- Stats principales en pourcentage : Physique, Mental, Social.
- PV et PSY choisis à la création.
- "Symbiote" renommé en PSY.
- Stats bonus personnalisables (Défense incluse).
- Portrait envoyé directement depuis les fichiers de l'ordinateur (PNG/JPG/WEBP/GIF, 5 Mo max).

## Version V5.2
- Aucune stat bonus par défaut.
- Correction de la sauvegarde des stats bonus personnalisées.

## Version V6
- Notes et documents visibles directement sur le tableau de bord joueur.
- Ouverture des notes en popup.
- Partage d'une note ou d'un document à un personnage d'un autre joueur.
- Images facultatives dans les notes/documents.
- Création de notes par les joueurs et par le MJ.
- Notification automatique au destinataire lors d'un partage.
