first commit

This commit is contained in:
2026-07-21 16:50:58 +02:00
commit 256599626e
407 changed files with 30489 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
# Audit backlog GitHub — Ben-to (plan prod / domaines)
Date de référence : 2026-04-26. Repo : `kazerlelutin/ben-to`.
## Architecture (rappel)
| Rôle | URL |
|------|-----|
| App web (Solid / Vite) | `https://ben-to.fr/` |
| Livre / ancienne vitrine | `https://book.ben-to.fr/` (bascule depuis `ben-to.fr`) |
| Contenus recettes | Dépôt Git (`ressources/bentext`, `ressources/public`) — build hors ligne |
Liens de partage recette : `window.location.origin` + `/r/{base}/{variant}` — cohérent avec le domaine où lapp est servie (`ben-to.fr`).
## Issues MVP existantes (#1#6)
| # | Titre | État | Lecture « traité vs restant » |
|---|--------|------|--------------------------------|
| 1 | MVP: fondations monorepo Solid + Capacitor | **CLOSED** | Traité. |
| 2 | MVP: pipeline .bentext vers JSON canonique | **CLOSED** | Traité (`build-recipes`, sources locales). |
| 3 | MVP: Builder 3 étapes base → variante → recette | **OPEN** | Fonctionnel dans le dépôt (builder, partage, filtres) ; issue à fermer ou à réduire au scope « polish / accessibilité / edge cases ». |
| 4 | MVP: offline-first + sync PocketBase | **OPEN** | Non aligné avec le front web actuel (pas dintégration PocketBase visible dans `apps/web`) ; backlog produit ou à reclarifier. |
| 5 | MVP: qualité/tests et sécurité CI | **OPEN** | CI racine active (lint, typecheck, unit, int, e2e, lighthouse) ; issue à fermer ou à limiter aux « gaps » (ex. mobile-release placeholder). |
| 6 | MVP: delivery CapRover + release mobile | **OPEN** | Web déployable (`Dockerfile`, `captain-definition`) ; release mobile CI encore placeholder dans `.github/workflows/mobile-release.yml`. |
## Nouvelles issues (plan)
Créées sur GitHub via [`create-backlog-prod-issues.sh`](create-backlog-prod-issues.sh) (nécessite `gh` + `jq` authentifiés) :
| Thème | Titres (recherche dans les issues) |
|--------|-------------------------------------|
| Meta | `[Meta] Audit backlog prod — avril 2026` (#7) |
| Catalogue / assets | `Catalogue — icônes bases…`, `Catalogue — icônes pour toutes les variantes`, `Assets — placeholders couvertures…` (#8#10, titres pouvant évoluer) |
| Play / Android | `Play Store — compte…`, `fiche produit`, `URL politique`, `Data safety`, `Android — signature release…` (#11#15) |
| Optionnel | `Tech — i18n domaines…` (#16) |
Relancer `./scripts/github/create-backlog-prod-issues.sh` : les titres déjà ouverts sont **ignorés** (pas de doublon).
+166
View File
@@ -0,0 +1,166 @@
#!/usr/bin/env bash
# Crée les issues GitHub du plan « Backlog GitHub, domaines et suite prod »
# si aucune issue ouverte du même titre nexiste déjà.
# Prérequis : GitHub CLI (`gh`) authentifié, `jq` installé.
set -euo pipefail
REPO="${1:-kazerlelutin/ben-to}"
issue_exists() {
local title="$1"
local n
n="$(gh issue list -R "$REPO" --state open --limit 500 --json title | jq --arg t "$title" '[.[] | select(.title == $t)] | length')"
[[ "${n:-0}" -gt 0 ]]
}
create_if_absent() {
local title="$1"
local body_file="$2"
if issue_exists "$title"; then
echo "SKIP (déjà ouvert): $title"
return 0
fi
gh issue create -R "$REPO" -t "$title" -F "$body_file" -l enhancement
echo "OK: $title"
}
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
# --- Meta audit ---
cat >"$TMP/meta.md" <<'EOF'
## Synthèse audit backlog (scripts/github/BACKLOG-AUDIT.md)
Voir le fichier **BACKLOG-AUDIT.md** dans `scripts/github/` du dépôt pour le tableau détaillé des issues #1#6 et larchitecture `app` / `book` / contenus (`ressources/`).
**Résumé :** #1 et #2 fermées ; #3#6 ouvertes — interprétation : builder et CI largement avancés côté code ; PocketBase à reclarifier ; delivery mobile à compléter (signing / Gradle).
Prochaine étape : traiter les nouvelles issues « API assets » et « Play » créées par le même plan.
EOF
create_if_absent "[Meta] Audit backlog prod — avril 2026" "$TMP/meta.md"
# --- API / assets ---
cat >"$TMP/api-bases.md" <<'EOF'
## Contexte
Recettes et sprites sont **versionnés dans le dépôt** (`ressources/bentext`, `ressources/public/ingredient-sprites.bentext`). Il manque encore des tuiles cohérentes pour certaines bases canoniques.
## À faire
- Fournir ou ajuster les **sprites / alias** pour les bases : **mandu**, **dan bing**, **muffin**, **madeleine** (même pipeline que les autres bases dans le catalogue).
- Vérifier que `ingredient-sprites.bentext` et `npm run pipeline:recipes` reflètent les slugs / alias attendus.
## Critères
- Les bases concernées affichent une icône correcte dans le builder après `npm run pipeline:recipes`.
EOF
create_if_absent "Catalogue — icônes bases manquantes (mandu, dan bing, muffin, madeleine)" "$TMP/api-bases.md"
cat >"$TMP/api-variants.md" <<'EOF'
## Contexte
Le catalogue expose de nombreuses variantes ; les icônes dingrédients / tuiles doivent être cohérentes pour toutes.
## À faire
- Inventaire dans le dépôt des variantes / alias dingrédients nécessitant une entrée dans `ingredient-sprites.bentext`.
- Couvrir **toutes les variantes** ou documenter une **règle de fallback** (placeholder, sprite générique) lorsque aucune tuile ne correspond.
## Critères
- Aucune variante « cassée » visuellement dans le builder ; fallback explicite documenté.
EOF
create_if_absent "Catalogue — icônes pour toutes les variantes (+ fallback)" "$TMP/api-variants.md"
cat >"$TMP/placeholders.md" <<'EOF'
## Contexte
Certaines recettes nont pas encore de visuel final ; le build gère déjà des placeholders (`ressources/recipe-placeholder-covers`, logique dans `scripts/build-recipes.mjs`).
## À faire
- Définir la **convention** (nommage, par locale ou unique) pour les couvertures manquantes.
- Produire / brancher les **placeholders** dans le dépôt pour toutes les recettes sans image finale.
## Critères
- Build sans trou visuel critique ; liste des recettes encore en placeholder documentée.
EOF
create_if_absent "Assets — placeholders couvertures recettes manquantes" "$TMP/placeholders.md"
# --- Play / Android ---
cat >"$TMP/play-account.md" <<'EOF'
## À faire
- Créer le **compte développeur Google Play** (frais denregistrement one-shot).
- Accepter les accords distributeur ; définir pays / zones de distribution.
## Références
- `appId` : `com.kazerlelutin.bento` (`apps/mobile/capacitor.config.ts`).
EOF
create_if_absent "Play Store — compte développeur Google Play" "$TMP/play-account.md"
cat >"$TMP/play-listing.md" <<'EOF'
## À faire
- Fiche **Play Console** : nom, descriptions courte/longue, captures d’écran, icône haute résolution.
- **Classification du contenu** (questionnaire Play).
- Alignement avec la marque **Bento** / Ben-to.
## Package
- `com.kazerlelutin.bento` — vérifier cohérence avec la fiche avant publication.
EOF
create_if_absent "Play Store — fiche produit (captures, descriptions, classement)" "$TMP/play-listing.md"
cat >"$TMP/play-privacy.md" <<'EOF'
## À faire
- Publier une **URL HTTPS** de politique de confidentialité (obligatoire Play).
- Cohérence avec les mentions légales / confidentialité de lapp (`packages/shared/i18n`, pages statiques).
## Notes
- Peut être servie depuis `ben-to.fr` (domaine apex de lapp) ou autre sous-domaine stable.
EOF
create_if_absent "Play Store — URL politique de confidentialité (HTTPS)" "$TMP/play-privacy.md"
cat >"$TMP/play-data-safety.md" <<'EOF'
## À faire
- Remplir le formulaire **Data safety** (données collectées, partagées, chiffrement, etc.).
- Aligner sur le comportement réel : stockage local (constructeur), catalogue embarqué, mesure daudience optionnelle (Matomo).
## Fichiers utiles
- `apps/web/index.html`, `apps/web/src/infra/analytics.ts`
EOF
create_if_absent "Play Store — déclaration Data safety" "$TMP/play-data-safety.md"
cat >"$TMP/play-signing.md" <<'EOF'
## À faire
- **Keystore** upload / **Play App Signing**.
- Pipeline **AAB** (`bundleRelease`) — aujourdhui `.github/workflows/mobile-release.yml` ne fait quun placeholder après `mobile:sync`.
## Critères
- Documenter release locale (Android Studio) ou CI avec secrets (`KEYSTORE_*`, etc.).
EOF
create_if_absent "Android — signature release + CI (remplacer placeholder mobile-release)" "$TMP/play-signing.md"
# --- Optionnel (regroupement plan §4) ---
cat >"$TMP/optional-infra.md" <<'EOF'
## Périmètre (optionnel / dette)
- **i18n** : formulations `ben-to.fr` vs `book.ben-to.fr` dans `packages/shared/i18n/src/dictionary.ts` (depuis la migration vers le domaine apex, lapp nest plus servie sur `app.ben-to.fr`).
- **CORS** : pertinent seulement si un jour le catalogue ou des assets sont chargés en runtime depuis un autre domaine (hors périmètre actuel : tout est embarqué au build).
- **Redirects** : migration utilisateurs `ben-to.fr` → `book.ben-to.fr` (SEO, signets).
- **Matomo** : si activation du tracker complet → bandeau cookies + mise à jour privacy.
Découper en sous-tickets si besoin.
EOF
create_if_absent "Tech — i18n domaines, CORS bentext runtime, redirects book, Matomo/cookies" "$TMP/optional-infra.md"
echo "Terminé."
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -euo pipefail
REPO="${1:-kazerlelutin/ben-to}"
gh issue create -R "$REPO" -t "MVP: fondations monorepo Solid + Capacitor" -b "Mettre en place workspaces, architecture feature-first, scripts qualité."
gh issue create -R "$REPO" -t "MVP: pipeline .bentext vers JSON canonique" -b "Parser ressources/bentext, générer recettes multilingues et corrélation assets."
gh issue create -R "$REPO" -t "MVP: Builder 3 étapes base -> variante -> recette" -b "Progression, filtre, quantités, partage/impression."
gh issue create -R "$REPO" -t "MVP: offline-first + sync PocketBase" -b "Queue locale, stratégie last-write-wins, reprise réseau."
gh issue create -R "$REPO" -t "MVP: qualité/tests et sécurité CI" -b "Unit/int/e2e, Gherkin, audits sécurité, lighthouse."
gh issue create -R "$REPO" -t "MVP: delivery CapRover + release mobile" -b "Déploiement web automatique et pipeline de release Android/iOS."
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env bash
# Crée les 3 issues post-MVP sur GitHub (nécessite : gh auth login).
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$ROOT"
if ! command -v gh >/dev/null 2>&1; then
echo "Installez GitHub CLI : https://cli.github.com/" >&2
exit 1
fi
repo_args=()
if [[ -n "${GITHUB_REPOSITORY:-}" ]]; then
repo_args=( -R "${GITHUB_REPOSITORY}" )
fi
gh issue create "${repo_args[@]}" \
--title "[Refactor] Builder — découpage SOLID et responsabilités claires" \
--body-file "${ROOT}/docs/tickets/issue-builder-solid.body.md"
gh issue create "${repo_args[@]}" \
--title "[Archi] Supprimer les index.ts barrel et verrouiller par règle projet" \
--body-file "${ROOT}/docs/tickets/issue-no-index-barrels.body.md"
gh issue create "${repo_args[@]}" \
--title "[SEO] Métadonnées OG/Twitter par recette (/r/...)" \
--body-file "${ROOT}/docs/tickets/issue-seo-recipe-og.body.md"
echo "OK — 3 issues créées."