Sets up the initial project infrastructure only, no business modules yet: - apps/api: Express/TypeScript backend skeleton (healthcheck route, zod-validated env config, error handling, Prisma initialized with no models yet, Postgres as the target DB) - apps/web: React/Vite/TypeScript frontend skeleton, Capacitor-ready for the future mobile app - packages/shared: empty placeholder for types/schemas shared between api and web once the data model is defined - Tooling: Biome (lint/format), Mocha+Chai+Supertest (api tests), Cypress (web e2e smoke test), GitHub Actions CI (lint + test + build + e2e) - docker-compose.yml for local Postgres - README documents setup steps, including the Cypress binary caveat (pnpm install doesn't always fetch the native binary — needs `cypress install` run locally per machine) Fixes along the way: - apps/web/cypress.config.ts: disable GPU on browser launch for headless/sandboxed environments - apps/web/tsconfig.*: split into solution/app/node tsconfig files (standard Vite pattern) — the previous single-file setup caused `tsc -b` to emit compiled .js/.d.ts next to vite.config.ts and cypress.config.ts
2.2 KiB
2.2 KiB
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é entreapietweb(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 enablepuiscorepack 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
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.