POC personnel pour s'exercer à la stack React / NestJS / Prisma, développé et exécuté entièrement dans un GitHub Codespace, avec l'assistance de Claude Code.
Deux objectifs en parallèle :
- 📚 Apprentissage — découvrir et manipuler React (Vite), NestJS et Prisma dans un même projet, en environnement GitHub Codespaces, en s'appuyant sur un assistant IA pour la mise en place technique.
- 🧮 Fonctionnel — construire un petit outil de suivi du temps de travail : un salarié saisit son heure d'arrivée et son heure de départ pour chaque jour travaillé de la semaine, et le nombre d'heures travaillées dans le mois est recalculé à la volée à partir de ces saisies.
- ⚛️ apps/web — React 18 + Vite (JavaScript)
- 🐈 apps/api — NestJS + Prisma (TypeScript)
- 🐘 PostgreSQL — via Docker Compose
apps/
web/ # frontend React (Vite)
api/ # backend NestJS + Prisma
docker-compose.yml # service PostgreSQL
Prérequis : Node.js et Docker, tous deux déjà disponibles dans ce Codespace.
npm install
npm run dev- 🌐 Frontend : port
3000 - 🔌 API : port
3001
Au démarrage de l'API (npm run dev, npm run dev:api, ou npm run start:dev --workspace api), Docker Compose lance automatiquement le conteneur PostgreSQL, applique les migrations Prisma et exécute le seed de données — aucune étape manuelle n'est nécessaire.
npm run dev # web + api en parallèle
npm run dev:web # frontend seul
npm run dev:api # backend seul (démarre aussi la base de données)
npm run build # build de tous les workspaces
npm run test # tests de tous les workspaces
npm run prisma:generate # régénère le client Prisma
npm run prisma:migrate # crée/applique une migration PrismaLe frontend et l'API tournent chacun sur un port forwardé par Codespaces (*-3000.app.github.dev et *-3001.app.github.dev). Un appel direct entre ces deux origines se heurte au proxy d'authentification de Codespaces (erreur CORS trompeuse). Pour l'éviter, le frontend appelle l'API via un chemin relatif (/api/...) que Vite proxifie en interne vers http://localhost:3001 en développement — voir CLAUDE.md pour le détail.
Le socle technique est en place (monorepo, connexion frontend ↔ backend, base de données PostgreSQL avec migrations et seed automatiques). La fonctionnalité de saisie des heures et de calcul mensuel reste à implémenter.