Skip to content

Commit 61ef693

Browse files
authored
Merge pull request #1 from betagouv/feat/init
feat: init app
2 parents 4817c5c + b3fabca commit 61ef693

62 files changed

Lines changed: 7196 additions & 1 deletion

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/hooks/format-on-write.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
FILE=$(node -e "process.stdin.on('data',d=>console.log(JSON.parse(d).tool_input.file_path))")
3+
case "$FILE" in
4+
*.ts|*.tsx|*.js|*.jsx|*.css|*.md|*.json) ;;
5+
*) exit 0 ;;
6+
esac
7+
pnpm exec prettier --write "$FILE" > /dev/null 2>&1
8+
exit 0

.claude/settings.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"hooks": {
3+
"PostToolUse": [
4+
{
5+
"matcher": "Edit|Write",
6+
"hooks": [
7+
{
8+
"type": "command",
9+
"command": ".claude/hooks/format-on-write.sh"
10+
}
11+
]
12+
}
13+
]
14+
}
15+
}

.claude/skills/adr/SKILL.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
name: adr
3+
description: Créer un Architecture Decision Record pour une décision technique
4+
---
5+
6+
# Créer un ADR
7+
8+
Génère un Architecture Decision Record dans `docs/adr/` en suivant le template du projet.
9+
10+
## Étape 1 — Identifier le prochain numéro
11+
12+
Lister les fichiers dans `docs/adr/` et déterminer le prochain numéro séquentiel (format 4 chiffres : 0001, 0002, etc.).
13+
14+
## Étape 2 — Collecter le contexte
15+
16+
Si l'utilisateur n'a pas fourni tous les détails, analyser le code pertinent pour comprendre :
17+
18+
- Le problème ou le besoin qui motive la décision
19+
- Les alternatives envisagées (au moins 2)
20+
- Les conséquences positives et négatives
21+
22+
## Étape 3 — Rédiger l'ADR
23+
24+
Créer le fichier `docs/adr/XXXX-titre-en-kebab-case.md` en suivant le template `docs/adr/0000-template.md` :
25+
26+
- **Date** : date du jour
27+
- **Statut** : Accepté (sauf indication contraire)
28+
- **Contexte** : problème concret, pourquoi maintenant
29+
- **Décision** : formulation claire et directe
30+
- **Options envisagées** : au moins 2 options avec avantages/inconvénients, marquer la retenue
31+
- **Conséquences** : positives, négatives/risques, migration si applicable
32+
- **Liens** : fichiers du projet concernés, documentation, issues/PRs
33+
34+
Règles :
35+
36+
- Rédiger en **français** avec les accents
37+
- Référencer les **chemins de fichiers** du projet concernés
38+
- Être **concis** mais précis
39+
- Ne PAS utiliser d'emojis
40+
41+
## Étape 4 — Confirmer
42+
43+
Afficher un résumé : numéro, titre, fichier créé.

.claude/skills/verif/SKILL.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
name: verif
3+
description: Vérification post-implémentation (format + lint + typecheck + tests + e2e optionnel)
4+
---
5+
6+
# Vérification complète
7+
8+
Pipeline de vérification à lancer après chaque implémentation.
9+
10+
## Vérification rapide (par défaut)
11+
12+
Pour la majorité des cas (refactor logique, ajout de tests unitaires, modifs hors UI),
13+
une seule commande suffit :
14+
15+
```bash
16+
pnpm validate
17+
```
18+
19+
Si elle échoue, suivre la séquence détaillée ci-dessous pour identifier le problème.
20+
21+
## Vérification complète (avant push / PR)
22+
23+
Si la modification touche l'UI, le routing, le DSFR, ou avant de pousser sur la branche :
24+
25+
```bash
26+
pnpm validate:full
27+
```
28+
29+
Cette commande ajoute les tests E2E Playwright après le `validate` rapide.
30+
31+
## Séquence détaillée
32+
33+
### Étape 1 — Formatage
34+
35+
Lance `pnpm format`. Si des fichiers sont modifiés, note-les.
36+
37+
### Étape 2 — Lint
38+
39+
Lance `pnpm lint:fix`.
40+
Si des erreurs ESLint persistent, corrige-les directement dans le code et relance `pnpm lint`.
41+
42+
### Étape 3 — TypeScript
43+
44+
Lance `pnpm typecheck`.
45+
Corrige les erreurs de typage (casts explicites, imports manquants, types).
46+
47+
### Étape 4 — Tests unitaires (Vitest)
48+
49+
Lance `pnpm test`.
50+
Analyse les échecs et corrige le code ou les tests.
51+
52+
### Étape 5 — Tests E2E (Playwright) — pour les changements UI
53+
54+
Si la modification touche l'UI ou le routing, ou avant un push :
55+
56+
```bash
57+
pnpm test:e2e
58+
```
59+
60+
Pré-requis : `pnpm exec playwright install chromium` (à faire une seule fois par poste).
61+
62+
## Résumé
63+
64+
Affiche un résumé concis :
65+
66+
```
67+
Vérification terminée :
68+
- Format : OK / X fichiers corrigés
69+
- Lint : OK / X erreurs corrigées
70+
- TypeScript : OK / X erreurs corrigées
71+
- Tests unit. : OK / X tests corrigés
72+
- Tests E2E : OK / non lancé
73+
```
74+
75+
Si tout est OK dès le départ, affiche simplement : `Vérification OK — aucune correction nécessaire.`

.github/dependabot.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "npm"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
open-pull-requests-limit: 10
8+
groups:
9+
security:
10+
patterns:
11+
- "*"
12+
update-types:
13+
- "patch"
14+
- "minor"

.github/workflows/ci.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: ["**"]
6+
pull_request:
7+
branches: [main, dev]
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
ci:
14+
name: Test, Lint & Build
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v5
20+
21+
- name: Setup pnpm
22+
uses: pnpm/action-setup@v5
23+
24+
- name: Setup Node.js
25+
uses: actions/setup-node@v5
26+
with:
27+
node-version-file: ".node-version"
28+
cache: "pnpm"
29+
30+
- name: Install dependencies
31+
run: pnpm install --frozen-lockfile
32+
33+
- name: Check formatting
34+
run: pnpm format:check
35+
36+
- name: Run linting
37+
run: pnpm lint
38+
39+
- name: Run type checking
40+
run: pnpm typecheck
41+
42+
- name: Run tests
43+
run: pnpm test
44+
45+
- name: Install Playwright Chromium
46+
run: pnpm exec playwright install --with-deps chromium
47+
48+
- name: Run E2E tests
49+
run: pnpm test:e2e
50+
51+
- name: Upload Playwright report
52+
if: ${{ !cancelled() && failure() }}
53+
uses: actions/upload-artifact@v4
54+
with:
55+
name: playwright-report
56+
path: playwright-report/
57+
retention-days: 7
58+
59+
- name: Build application
60+
run: pnpm build
61+
env:
62+
NODE_ENV: production

.gitignore

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Dependencies
2+
node_modules/
3+
.pnp
4+
.pnp.js
5+
6+
# Production builds
7+
dist/
8+
build/
9+
*.tsbuildinfo
10+
11+
# Testing
12+
coverage/
13+
.nyc_output
14+
15+
# Playwright
16+
playwright-report/
17+
test-results/
18+
.playwright/
19+
20+
# Logs
21+
logs
22+
*.log
23+
npm-debug.log*
24+
pnpm-debug.log*
25+
yarn-debug.log*
26+
yarn-error.log*
27+
28+
# OS
29+
.DS_Store
30+
Thumbs.db
31+
32+
# IDEs and editors
33+
.idea/
34+
.project
35+
.classpath
36+
.c9/
37+
*.launch
38+
.settings/
39+
*.sublime-workspace
40+
41+
# IDE - VSCode
42+
.vscode/*
43+
!.vscode/settings.json
44+
!.vscode/tasks.json
45+
!.vscode/launch.json
46+
!.vscode/extensions.json
47+
48+
# Environment variables
49+
.env
50+
.env.development.local
51+
.env.test.local
52+
.env.production.local
53+
.env.local
54+
.env.*.local
55+
.env.development
56+
.env.test
57+
.env.production
58+
59+
# Temporary files
60+
.temp
61+
.tmp
62+
tmp/
63+
temp/
64+
65+
# Runtime data
66+
pids
67+
*.pid
68+
*.seed
69+
*.pid.lock
70+
71+
# Debug
72+
*.pem
73+
74+
# Package manager files
75+
.yarn/
76+
.pnpm-store/
77+
pnpm-debug.log*
78+
79+
# Backup files
80+
*.backup
81+
*.bak
82+
*~
83+
84+
# Misc
85+
.cache
86+
.parcel-cache
87+
.local*
88+
89+
# Claude Code
90+
.claude/settings.local.json
91+
CLAUDE.local.md

.node-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
24

.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ignore-scripts=true

.prettierignore

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Dependencies
2+
node_modules/
3+
pnpm-lock.yaml
4+
5+
# Build outputs
6+
dist/
7+
build/
8+
coverage/
9+
*.tsbuildinfo
10+
11+
# IDE
12+
.idea/
13+
.vscode/
14+
*.swp
15+
*.swo
16+
17+
# Environment
18+
.env
19+
.env.*
20+
21+
# Logs
22+
*.log
23+
logs/
24+
25+
# OS
26+
.DS_Store
27+
Thumbs.db
28+
29+
# Documentation
30+
*.md
31+
32+
# Playwright
33+
playwright-report/
34+
test-results/

0 commit comments

Comments
 (0)