actions
CI / quality (push) Waiting to run
CI / e2e-and-a11y (push) Blocked by required conditions
CI / lighthouse (push) Blocked by required conditions
CI / android-smoke (push) Waiting to run
CI / pull-request-report (push) Blocked by required conditions
Security / codeql (push) Waiting to run
Security / deps-and-secrets (push) Waiting to run

This commit is contained in:
2026-07-21 16:52:43 +02:00
parent 256599626e
commit 785e1be2aa
12 changed files with 463 additions and 0 deletions
@@ -0,0 +1,15 @@
---
name: MVP Foundation
about: Fondations monorepo et architecture feature-first
title: "[MVP] Fondations monorepo Solid + Capacitor"
labels: ["mvp", "foundation"]
assignees: []
---
## Objectif
Mettre en place la base technique feature-first et DDD simple.
## Critères d'acceptation
- [ ] Workspaces apps/packages opérationnels
- [ ] Domain immutable pour base/variant/recipe
- [ ] Scripts qualité exécutables
+16
View File
@@ -0,0 +1,16 @@
---
name: Builder Flow
about: Parcours base -> variante -> recette
title: "[MVP] Builder flow 3 étapes"
labels: ["mvp", "feature"]
assignees: []
---
## Objectif
Implémenter le wizard de construction bento.
## Critères d'acceptation
- [ ] Filtre salé/sucré base
- [ ] Variante filtrée par base
- [ ] Recette fusionnée avec ordre de priorité
- [ ] Partage + impression + quantité
@@ -0,0 +1,15 @@
---
name: Quality and Security
about: CI quality gates et audits sécurité
title: "[MVP] Quality gates + security audits"
labels: ["mvp", "quality", "security"]
assignees: []
---
## Objectif
Garantir qualité, sécurité et non-régression.
## Critères d'acceptation
- [ ] Unit/integration/e2e en CI
- [ ] SAST + dependencies + secrets scan
- [ ] Lighthouse perf/seo/a11y bloquant
@@ -0,0 +1,33 @@
---
name: Refactor Builder SOLID
about: Découpage SOLID du flux builder (BuilderFlow)
title: "[Refactor] Builder — découpage SOLID et responsabilités claires"
labels: ["refactor"]
assignees: []
---
## Contexte
La logique et lUI du parcours builder sont concentrées dans `apps/web/src/ui/BuilderFlow.tsx` (fichier très volumineux). Le domaine pur existe déjà dans `packages/features/builder/src/domain.ts`.
## Objectif
Réduire la surface « tout-en-un » du flux builder et clarifier les frontières entre UI, état du wizard, et domaine (`@ben-to/builder`).
## Pistes techniques
- Extraire par **responsabilité unique** : étapes (base / variante / recette), barre dactions, feuille recette, navigation « Continuer », synchronisation reset (`builder-reset-bus`).
- Introduire des **hooks / ports** testables (ex. `useBuilderSteps`, `useRecipeSheet`) pour isoler les effets et la lecture du catalogue.
- **DIP** : lUI consomme le domaine (`domain.ts`) et des interfaces stables pour le catalogue, sans détails de parsing dispersés.
- Conserver / étendre les tests (`*.unit.test.ts`, e2e, Gherkin `@int-builder-*`).
## Critères dacceptation
- [ ] Aucun fichier du flux builder > ~250300 lignes sans justification documentée en commentaire de module.
- [ ] Tests unitaires / intégration et e2e verts ; pas de régression sur le parcours dans `specs/features/builder.feature`.
## Références
- `apps/web/src/ui/BuilderFlow.tsx`
- `packages/features/builder/src/domain.ts`
- `specs/features/builder.feature`
@@ -0,0 +1,36 @@
---
name: Architecture sans barrels index
about: Supprimer les index.ts barrel et verrouiller par règle / CI
title: "[Archi] Supprimer les index.ts barrel et verrouiller par règle projet"
labels: ["architecture"]
assignees: []
---
## Contexte
Les packages exposent des barrels `src/index.ts` avec `export * from "..."`. Les alias Vite dans `apps/web/vite.config.ts` pointent vers ces fichiers. Ce pattern complique le suivi des imports réels et la détection de code inutilisé.
## Objectif
Supprimer les barrels `index.ts`, migrer vers des imports **explicites**, et **verrouiller** la réintroduction du pattern (règles projet + CI).
## Travail technique
1. Remplacer les alias Vite (et chemins TypeScript si besoin) par des modules canoniques nommés (ex. `@ben-to/builder/domain`, `@ben-to/recipes/catalog`) ou par des sous-chemins `package.json` **`exports`** sans fichier nommé `index.ts`.
2. Mettre à jour tous les imports (`apps/web`, `packages/**`).
3. Supprimer les anciens `**/src/index.ts` après migration.
## Règles / outillage
- Étendre `.cursor/rules/ben-to-engineering.mdc` : pas de nouveau barrel `index.ts` ; imports depuis modules nommés.
- Optionnel : ESLint `no-restricted-imports` ou script `scripts/quality/` qui échoue si un `**/src/index.ts` barrel réapparaît.
## Critères dacceptation
- [ ] Plus de `export * from` dans des `index.ts` à la racine des packages features/shared concernés.
- [ ] CI (`check:quality` ou lint) empêche la réintroduction du pattern (selon le niveau de durcissement retenu).
## Références
- `apps/web/vite.config.ts`
- `packages/features/*/src/index.ts`, `packages/shared/*/src/index.ts`
@@ -0,0 +1,38 @@
---
name: SEO recettes OG / réseaux sociaux
about: Métadonnées Open Graph et Twitter par URL /r/...
title: "[SEO] Métadonnées OG/Twitter par recette (/r/...)"
labels: ["seo"]
assignees: []
---
## Contexte
Les métadonnées Open Graph et Twitter sont définies une seule fois dans `apps/web/index.html`. Les URLs de recette `/r/...` doivent exposer **titre**, **description** et **image** adaptés au partage.
**Contrainte SPA** : modifier `<title>` ou les meta **uniquement en JavaScript après chargement** ne suffit souvent pas pour les robots daperçu (Facebook, X, LinkedIn) : ils lisent le HTML initial.
## Objectif
Pour chaque recette partageable, fournir des métadonnées correctes : `og:title`, `og:description`, `og:image`, `og:url`, `twitter:card` (idéalement `summary_large_image` si visuel adapté), éventuellement `canonical`.
## Options à trancher (documenter le choix dans README ou `docs/`)
| Approche | Effort | Aperçus réseaux |
|----------|--------|-----------------|
| Pré-rendu statique des routes `/r/*` au build (catalogue / pipeline recettes) | Moyen | Bon pour crawlers statiques |
| Middleware / route serveur (Worker, reverse proxy, petite app Node) injectant le HTML minimal avec meta | Variable | Très bon si bien déployé |
| Meta uniquement côté client (Solid) | Faible | Insuffisant pour la majorité des partages |
Données : titres localisés, description courte, images de couverture produites par le pipeline recettes.
## Critères dacceptation
- [ ] Partager une URL `/r/...` affiche un aperçu avec **titre et image recette** (validation manuelle : Meta Sharing Debugger / Twitter Card Validator ou équivalent).
- [ ] Balises OG/Twitter cohérentes (`og:type`, `og:url`, etc.).
- [ ] Documentation de la stratégie retenue (build vs serveur).
## Références
- `apps/web/index.html`
- Parcours e2e et URL partagée dans `tests/e2e/builder.e2e.ts`