No description
Find a file
Nicolas 07692db4e0 Fix Cypress config loading: give the solution tsconfig a module system
apps/web/tsconfig.json (the tsc -b "solution" file) had no
compilerOptions, only files/references. Cypress's bundled ts-node
picks the nearest tsconfig.json to transpile cypress.config.ts, and
with no "module" specified it defaulted to CommonJS while
package.json declares "type": "module" — causing:

  ReferenceError: exports is not defined in ES module scope

Adding module/moduleResolution to the solution config (harmless for
tsc -b itself, since it only builds the referenced projects) fixes
the mismatch. This regressed after the earlier fix for the stray
vite.config.js emission and was never re-verified against Cypress
until CI caught it.
2026-08-16 10:51:58 +02:00
.github/workflows Fix CI: install Cypress binary explicitly before running e2e 2026-08-16 10:48:05 +02:00
apps Fix Cypress config loading: give the solution tsconfig a module system 2026-08-16 10:51:58 +02:00
packages/shared Scaffold generic pnpm monorepo (api + web + shared) 2026-08-16 10:18:48 +02:00
.env.example Remove hardcoded credentials from committed env/compose files 2026-08-16 10:40:07 +02:00
.gitignore Initial commit 2026-08-16 09:17:24 +02:00
.nvmrc Scaffold generic pnpm monorepo (api + web + shared) 2026-08-16 10:18:48 +02:00
biome.json Scaffold generic pnpm monorepo (api + web + shared) 2026-08-16 10:18:48 +02:00
docker-compose.yml Remove hardcoded credentials from committed env/compose files 2026-08-16 10:40:07 +02:00
package.json Scaffold generic pnpm monorepo (api + web + shared) 2026-08-16 10:18:48 +02:00
pnpm-lock.yaml Scaffold generic pnpm monorepo (api + web + shared) 2026-08-16 10:18:48 +02:00
pnpm-workspace.yaml Scaffold generic pnpm monorepo (api + web + shared) 2026-08-16 10:18:48 +02:00
README.md Remove hardcoded credentials from committed env/compose files 2026-08-16 10:40:07 +02:00
tsconfig.base.json Scaffold generic pnpm monorepo (api + web + shared) 2026-08-16 10:18:48 +02:00

batchCooking

Structure

Monorepo pnpm workspaces :

  • apps/api — backend Express/TypeScript (squelette générique : healthcheck, config env, Prisma non modélisé)
  • apps/web — frontend React/Vite/TypeScript (squelette générique, prêt à être embarqué par Capacitor plus tard)
  • packages/shared — code partagé entre api et web (types, schémas de validation, constantes) — vide pour l'instant

Aucun module métier n'est encore implémenté : cette base ne contient que l'outillage générique (lint/format, tests, CI, DB locale).

Prérequis

  • Node.js 22 (voir .nvmrc)
  • pnpm 10 (corepack enable puis corepack use pnpm@10.12.4, ou installation manuelle)
  • Docker (pour Postgres en local)

Installation

pnpm install
cp .env.example .env
cp apps/api/.env.example apps/api/.env

Puis édite ces deux .env pour renseigner de vrais POSTGRES_USER/POSTGRES_PASSWORD (et la DATABASE_URL correspondante dans apps/api/.env) : les fichiers .env.example ne contiennent volontairement aucun identifiant réel (juste changeme), et docker-compose.yml refuse de démarrer tant que POSTGRES_USER/PASSWORD/DB ne sont pas définis dans .env — pas de valeur par défaut en dur dans les fichiers commités.

Cypress : téléchargement du binaire

pnpm install installe le package cypress mais pas forcément son binaire (le téléchargement du .exe/binaire natif peut être ignoré selon l'environnement où pnpm install a été lancé — ex. un environnement sandboxé/CI dont le cache ne correspond pas à celui de ta machine). Si pnpm --filter web e2e échoue avec une erreur du type :

No version of Cypress is installed in: ...\AppData\Local\Cypress\Cache\...
Please reinstall Cypress by running: cypress install

lance simplement, depuis ta machine :

pnpm --filter web exec cypress install

(à faire une seule fois par machine ; le binaire est mis en cache localement, hors du repo).

Développement

# Base de données Postgres locale
docker compose up -d

# Backend (http://localhost:3000)
pnpm dev:api

# Frontend (http://localhost:5173)
pnpm dev:web

Qualité / Tests

pnpm lint          # Biome (lint + format check)
pnpm lint:fix       # Biome --write
pnpm test           # tests unitaires/intégration (Mocha, apps/api)
pnpm --filter web e2e   # tests e2e (Cypress, démarre le serveur dev automatiquement)
pnpm build           # build de tous les workspaces

La CI GitHub Actions (.github/workflows/ci.yml) exécute lint + tests + build sur chaque push/PR vers main, puis les tests e2e Cypress.