Implémentation du jeu Wordle en français. Projet d'évaluation sur les tests unitaires — M1 Fullstack.
Stack : Next.js 16 · React 19 · TypeScript · Tailwind CSS · Shadcn UI · Vitest
npm install# Mode watch (développement)
npm test
# Exécution unique (CI / évaluation)
npm run test:runLancer un seul fichier de test :
npx vitest run src/__tests__/domain/feedback.test.tsnpm run devOuvrir http://localhost:3000.
src/
├── domain/ # Logique métier pure — aucune dépendance framework
│ ├── types.ts # Word, LetterFeedback, AttemptResult, GameState
│ ├── errors.ts # InvalidWordError, InvalidLengthError, GameAlreadyOverError
│ ├── IDictionary.ts # Interface contrat du dictionnaire
│ ├── feedback.ts # evaluateGuess() — fonction pure
│ └── game.ts # WordleGame — reçoit IDictionary en constructeur
├── infrastructure/
│ └── StaticDictionary.ts # Implémentation avec liste statique
├── data/
│ └── words.ts # Liste de mots français à 5 lettres
├── hooks/
│ └── useWordle.ts # Pont domain ↔ état React
└── components/ # GameBoard, Row, LetterTile, Keyboard
- Devinez le mot secret de 5 lettres en 6 tentatives maximum.
- Feedback par lettre après chaque tentative :
- 🟩 CORRECT — bonne lettre, bonne position
- 🟨 MISPLACED — bonne lettre, mauvaise position
- ⬛ ABSENT — lettre absente du mot secret
- Règle lettres multiples : si une lettre apparaît plus de fois dans la proposition que dans le secret, les occurrences surnuméraires sont marquées ABSENT.