Skip to content

Contribuer ​

Workflow recommandé ​

  1. Fork + clone le repo

  2. Crée une branche depuis dev :

    bash
    git checkout -b feat/ma-feature
  3. Implémente avec typage strict TypeScript

  4. Passe les gates qualité :

    bash
    pnpm typecheck
    pnpm lint
    pnpm build
    pnpm test:ws-smoke
  5. Commit en Conventional Commits

  6. Ouvre une PR vers dev avec contexte et vérification manuelle

Règles techniques ​

  • Renderer ↔ Main : uniquement via preload (window.streamoos) - jamais ipcRenderer direct
  • Types IPC : centralisés dans app/src/shared/ipc.ts
  • Handlers : implémenter FeatureHandler depuis app/src/main/handlers/types.ts
  • Logs : utiliser app/src/main/observability/logger.ts dans le main - jamais console.log
  • Tokens : safeStorage uniquement - jamais en clair dans SQLite ou localStorage
  • Migrations : changements de schéma SQLite par étape, sans couplage inutile

Checklist PR ​

  • [ ] Impact fonctionnel décrit dans la description
  • [ ] Logs importants visibles et compréhensibles
  • [ ] Aucun spam de logs sur interactions fréquentes (volume, progress)
  • [ ] Smoke test WS validé (pnpm test:ws-smoke)
  • [ ] Aucune régression TypeScript strict (pnpm typecheck)

CI / Workflows ​

Les workflows GitHub Actions sont dans .github/workflows/ :

WorkflowDéclencheurActions
ci.ymlPush / PRtypecheck, lint, build, tests
release.ymlTag v*Build dist Windows + Linux, création release GitHub

Zone de code par feature ​

FeatureMainRendererShared
KHInsiderapp/src/main/handlers/khinsider/app/src/renderer/components/khinsider/app/src/shared/ipc.ts
Timerapp/src/main/handlers/timer/app/src/renderer/components/timer/-
Twitchapp/src/main/handlers/twitch/app/src/renderer/components/twitch/app/src/shared/planning.ts
Discordapp/src/main/handlers/discord/app/src/renderer/components/discord/-
SMTCapp/src/main/handlers/smtc/app/src/renderer/components/smtc/-
Remoteapp/src/main/remote/app/src/renderer/remote/ (PWA)-
Overlaysapp/overlays/-app/overlays/shared/

Reference rapide de l'architecture ​

app/src/
├── main/              # Processus principal Electron (Node.js)
│   ├── handlers/      # Handlers de features (un par feature)
│   ├── ws/            # Serveur WebSocket + routeur + broadcaster
│   ├── remote/        # Serveur Fastify HTTPS pour PWA mobile
│   ├── storage/       # Store de preferences better-sqlite3
│   ├── windows/       # Gestion des BrowserWindow
│   └── observability/ # logger pino (logger.ts)
├── preload/           # contextBridge (window.streamoos)
├── renderer/          # Dashboard React 19 + Vite 6
└── shared/            # Types uniquement (pas de deps runtime)
    ├── ipc.ts         # Canaux IPC, types de features, contrats d'etat
    └── planning.ts    # Types de planification Twitch

i18n ​

Toutes les chaines visibles par l'utilisateur doivent etre localisees. Langues : fr (defaut), en, de.

  • Fichiers de traduction : locales/<lang>/translation.json
  • Ne jamais hardcoder de texte UI dans le JSX -- utiliser t("cle") du systeme i18n
  • Ordre de detection : querystring > localStorage

Released under the MIT License.