# Installation du REGISTRE DU FOIS sur Namecheap

Application **Node.js + Express + SQLite**. La base de données est un simple
fichier (`database.sqlite`), **aucun serveur MySQL/PostgreSQL n'est requis** —
c'est ce qui rend le déploiement simple, y compris sur hébergement mutualisé.

Ce paquet contient déjà **la base remplie avec vos 69 fiches**. Vous n'avez donc
rien à réimporter.

---

## Contenu du paquet

```
app.js              <- point d'entrée (à indiquer comme "startup file" sur cPanel)
server.js           <- serveur Express + API REST
db.js               <- connexion SQLite
schema.sql          <- structure de la base (créée auto si base absente)
import.js           <- (optionnel) réimport depuis un fichier Excel
database.sqlite     <- BASE DE DONNÉES avec vos 69 fiches (déjà remplie)
package.json        <- dépendances
package-lock.json
public/             <- interface web (HTML / CSS / JS)
```

> ⚠️ Le dossier `node_modules` n'est **pas** inclus : il sera généré sur le
> serveur (indispensable car le module `sqlite3` doit être compilé pour Linux).

---

## A. Hébergement mutualisé cPanel (le cas Namecheap le plus courant)

> Requiert un plan incluant **« Setup Node.js App »** dans cPanel
> (Stellar Plus, Stellar Business, ou tout plan avec Node.js / Application Manager).
> Si vous ne trouvez pas cet outil, contactez le support Namecheap : la plupart
> des plans mutualisés l'activent sur demande.

### 1. Envoyer les fichiers
1. cPanel → **File Manager**.
2. Créez (ou choisissez) un dossier pour l'application, ex. `registre-fois`
   dans votre `home` (pas dans `public_html`).
3. Entrez dans ce dossier → **Upload** → envoyez le fichier
   `registre-fois-namecheap.zip`.
4. De retour dans File Manager, clic droit sur le zip → **Extract**.
   Vous devez obtenir `app.js`, `server.js`, `public/`, `database.sqlite`, etc.
   directement dans `registre-fois`.

### 2. Créer l'application Node.js
1. cPanel → **Setup Node.js App** → **Create Application**.
2. Renseignez :
   - **Node.js version** : `18.x` ou `20.x` (LTS récent).
   - **Application mode** : `Production`.
   - **Application root** : `registre-fois` (le dossier extrait à l'étape 1).
   - **Application URL** : le domaine ou sous-domaine voulu
     (ex. `registre.mondomaine.com` — créez le sous-domaine avant si besoin).
   - **Application startup file** : `app.js`.
3. **Create**.

### 3. Installer les dépendances
1. Toujours dans **Setup Node.js App**, ouvrez l'application créée.
2. Cliquez sur **Run NPM Install** (installe `express`, `sqlite3`, etc.).
   Patientez jusqu'à la fin.
3. Cliquez sur **Restart**.

### 4. Ouvrir l'application
Rendez-vous sur l'URL configurée. Le registre doit s'afficher avec vos fiches.

### Notes importantes (mutualisé)
- **Ne pas définir la variable `PORT`** : Passenger (le moteur cPanel) fournit
  automatiquement le bon port au serveur.
- **Ne pas supprimer** le fichier `.htaccess` généré automatiquement par cPanel
  dans le dossier de l'application.
- **Écriture de la base** : `database.sqlite` doit rester dans le dossier de
  l'application (accessible en écriture — c'est le cas par défaut pour votre
  compte). SQLite crée un fichier temporaire `database.sqlite-journal` pendant
  les enregistrements, c'est normal.
- **Si « Run NPM Install » échoue sur `sqlite3`** : choisissez une version Node
  LTS (18 ou 20) qui dispose de binaires précompilés, puis relancez. Si le
  problème persiste, ouvrez un ticket Namecheap (autorisation de compilation
  native) — ou demandez-moi une variante de la base compatible.

---

## B. VPS Namecheap (accès SSH)

Si vous avez un VPS (contrôle total) :

```bash
# 1. Installer Node.js LTS (exemple avec nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20

# 2. Déposer et extraire le paquet
mkdir -p /var/www/registre-fois && cd /var/www/registre-fois
# (uploadez et dézippez registre-fois-namecheap.zip ici)
unzip registre-fois-namecheap.zip

# 3. Installer les dépendances de production
npm install --omit=dev

# 4. Lancer en continu avec PM2
npm install -g pm2
pm2 start app.js --name registre-fois
pm2 save
pm2 startup            # suivez la commande affichée
```

Par défaut le serveur écoute sur le port **3000** (modifiable :
`PORT=8080 pm2 start app.js --name registre-fois`).

Placez ensuite un **reverse proxy** (Nginx/Apache) de votre domaine vers ce
port, et activez HTTPS (Let's Encrypt / AutoSSL).

Exemple minimal Nginx :
```nginx
server {
    server_name registre.mondomaine.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
```

---

## Sauvegarde & maintenance

- **Sauvegarder les données** : téléchargez régulièrement le fichier
  `database.sqlite` (File Manager → Download, ou `scp` sur VPS). Il contient
  toutes les fiches.
- **Repartir d'une base vide** : supprimez `database.sqlite` et
  redémarrez l'application — elle recréera une base vierge à partir de
  `schema.sql`.
- **Réimporter depuis un Excel** (optionnel) : placez le fichier
  `Fichier_FOIS_*.xlsx` dans le dossier parent de l'application et lancez
  `npm run import` (VPS/SSH). Non nécessaire ici puisque la base est fournie.

---

## Mettre à jour l'application plus tard

Pour déployer une nouvelle version du code sans perdre les données :
1. **Sauvegardez** d'abord `database.sqlite`.
2. Remplacez les fichiers `server.js`, `db.js`, `public/…` par les nouveaux.
3. Conservez votre `database.sqlite` existant (ne pas l'écraser).
4. `Run NPM Install` (si les dépendances ont changé) puis **Restart**.
