5e3e821e2a
Festipod now follows the local convention of welcometomyplace, mutual-aid.app and portejunes: one fixed port pair per app (Festipod defaults: backend 3005, app 4005; pod provider 3000/5000), overridable in backend/.env and .env. `make start` runs docker-compose-dev.yml (the local pod provider from images, Fuseki, Redis, mailcatcher, Arena); the backend and the app run outside Docker with `cd backend && pnpm dev` and `pnpm dev`. pnpm stays the package manager. The old docker-compose.yml, which containerized Festipod's own frontend and backend and could not reach the host's Fuseki and Redis, is gone; portless is dropped from the dev script, since the backend declares a single OIDC redirect URI. The local backend runs without a Redis cache, as the sibling apps do. The e2e suites and validate read the app, backend and pod provider URLs from the env files instead of hardcoding them. The deployment and local cookbook leaves record the traps met while resetting datasets: a dataset re-created under the same name needs a Fuseki restart (ClosedException otherwise), the anonymous WebACL probe at boot is expected, and a change of the backend's URL leaves persistent accounts with a participations collection the new app identity cannot control.
66 lines
3.9 KiB
Bash
66 lines
3.9 KiB
Bash
# Festipod — variables d'environnement (exemple)
|
|
#
|
|
# Copier en `.env` et renseigner les valeurs.
|
|
# En dev (`pnpm dev`) ET en prod (`bun run start`), l'app sert depuis src/ et
|
|
# lit ces variables au RUNTIME (via l'endpoint /festipod-config.json de src/index.ts).
|
|
#
|
|
# REQUIS POUR LES TESTS. La suite Cucumber tourne sous `node` (pas sous Bun), qui
|
|
# ne charge pas `.env` tout seul : le harness le lit explicitement et LÈVE UNE
|
|
# ERREUR NOMMÉE si le mot de passe ou le fichier manquent. Or `.env` ET `*.ngw`
|
|
# sont tous deux gitignorés — un clone frais n'a donc ni l'un ni l'autre et ne
|
|
# peut pas exécuter `@data`/`@e2e` tant que ces deux valeurs ne sont pas fournies.
|
|
|
|
# ── Portefeuille partagé (stopgap staging) ─────────────────────────────────
|
|
# Mot de passe du portefeuille partagé.
|
|
# VIDE => rien n'est passé à `configure({ sharedWallet })` => le SDK refuse de
|
|
# signer l'entrée et l'app affiche son panneau d'erreur au lieu de démarrer.
|
|
# REQUIS en staging (onboarding d'un appareil sans wallet) ET pour les tests.
|
|
FESTIPOD_SHARED_WALLET_PASSWORD=
|
|
|
|
# Chemin vers le fichier portefeuille partagé (.ngw), absolu ou relatif à la
|
|
# racine. Servi en téléchargement à /shared-wallet.ngw. C'est la forme du DEV
|
|
# LOCAL et du harness de TESTS : le fichier vit sur le disque de la machine.
|
|
FESTIPOD_SHARED_WALLET_FILE=/chemin/absolu/vers/festipod-wallet.ngw
|
|
|
|
# Contenu du portefeuille partagé (.ngw), encodé en base64 — deuxième source
|
|
# pour le même fichier. C'est la forme des DÉPLOIEMENTS (conteneur) : *.ngw est
|
|
# gitignoré, donc `COPY . .` n'en embarque aucun et rien n'en monte un ; le
|
|
# fichier n'étant pas un secret (l'app le sert à quiconque ouvre l'app), il
|
|
# voyage comme une variable de config. `FESTIPOD_SHARED_WALLET_FILE` est
|
|
# prioritaire quand les deux sont renseignées — voir le commentaire dans
|
|
# src/index.ts. Générer la valeur avec, p.ex., `base64 -w0 festipod-wallet.ngw`.
|
|
FESTIPOD_SHARED_WALLET_FILE_BASE64=
|
|
|
|
# ── Seed automatique (opt-in) ──────────────────────────────────────────────
|
|
# Non vide => l'app amorce des données de démo dans un wallet VIDE au 1er login.
|
|
# OFF par défaut : laisser vide en usage normal.
|
|
FESTIPOD_AUTO_SEED=
|
|
|
|
# ── Serveur ────────────────────────────────────────────────────────────────
|
|
# Port HTTP du serveur (4005 : l'app Festipod, paire 3005/4005 des apps sœurs).
|
|
PORT=4005
|
|
|
|
# NODE_ENV=production bascule `bun run start` (pas de HMR). En dev, laisser vide.
|
|
NODE_ENV=
|
|
|
|
# Le backend lit son propre backend/.env (voir backend/.env.example).
|
|
|
|
# ── Frontend / Backend coupling ────────────────────────────────────────────
|
|
# URL du backend telle que vue par le navigateur.
|
|
VITE_BACKEND_URL=http://localhost:3005
|
|
|
|
# Client ID OAuth/Solid du backend (laisser vide pour dériver `${VITE_BACKEND_URL}/as/actor/app`).
|
|
# Le client_id DOIT être l'URI de l'acteur app : le pod enregistre l'app sous cette URI et
|
|
# ne sert l'en-tête `Link: rel="interop:registeredAgent"` (découverte de l'enregistrement
|
|
# par le auth provider) que si le client_id égalise l'acteur.
|
|
VITE_BACKEND_CLIENT_ID=
|
|
|
|
# Pod provider ActivityPods par défaut (optionnel). Vide → l'écran de login demande une URL.
|
|
VITE_POD_PROVIDER_URL=http://localhost:3000
|
|
|
|
# ── Outillage dev (facultatif) ─────────────────────────────────────────────
|
|
# Override du chemin local du polyfill @ng-eventually/sdk pour `pnpm run
|
|
# overlay:polyfill` (overlay local réactif). Défaut = ../nextgraph/ng-eventually-js/packages/sdk.
|
|
NG_EVENTUALLY_LOCAL=
|
|
|