# To-do — eleva-speed

État au 2026-05-25, après merge Phase 9 + fix sidebar partout.

## À vérifier visuellement (urgent — pas de smoke automatique)

- [ ] **`/pricing` (auth + unauth)** — nouvelle grille `PricingGrid` portée du template `docs/pricing/princing-table.tsx`. Vérifier :
  - 4 cartes (Free / Starter / Pro / Business)
  - Pro tier visuellement marqué (BG `bg-foreground/[0.08]` + ring `ring-primary/40`)
  - Toggle Monthly / Yearly fonctionne
  - CTAs corrects selon l'état (unauth → signup, auth-current → disabled, auth-free → portal, auth-paid → checkout)
- [ ] **`/settings/billing`** — utilise désormais le même `PricingGrid`. Vérifier que le rendu match `/pricing` (cartes identiques, mêmes CTAs adaptés à l'état authed).
- [ ] **`/settings/profile`, `/settings/organization`, `/settings/team`** — la sidebar dashboard doit s'afficher (avant elle était absente).
- [ ] **`/admin/orgs`, `/admin/orgs/[orgId]`** — la sidebar dashboard doit s'afficher (avant elle était absente).

## Bugs connus à corriger

- [ ] **`POST /en/settings/billing 500 — "No Stripe price configured for business/month"`** (`lib/actions/billing.ts:36`). Env vars manquants pour le plan Business :
  - `STRIPE_PRICE_BUSINESS_MONTHLY`
  - `STRIPE_PRICE_BUSINESS_YEARLY`
    Récupérer les price IDs depuis Stripe Dashboard test → `.env.local`. Idem vérifier Pro.
- [ ] **Featured CTA pricing — bouton "Upgrade to Pro" en `bg-white/10` semi-transparent** : c'est la couleur littérale du template (pensée pour un BG featured sombre). Sur notre BG navy avec featured = `bg-foreground/[0.08]` (subtle lift), le bouton featured est MOINS pop que les autres. Si tu préfères l'inverse (Pro = pink primary, autres = outline), à dire.

## Support

- [ ] **Support — passer du mailto à un vrai canal**. Pour l'instant le bouton Support de la sidebar (`components/app-sidebar.tsx`) ouvre `mailto:bastien@elevaseo.com?subject=Support%20Eleva%20Speed`. Acceptable au lancement, mais à terme :
  - Adresse `support@elevaseo.com` (alias Resend ou helpdesk dédié — pas la perso de Bastien)
  - Widget in-app type Crisp / Intercom / Plain, ou une page `/support` avec form Server Action qui dump dans une table `support_ticket` + ping Slack
  - SLA / heures d'ouverture affichés à côté du lien

## Backlog non-bloquant

- [ ] **Phase 10+ — surfaces marketing publiques** (Gemini consultation dans `to-think.md`) :
  1. Homepage marketing publique (actuellement `/` redirect vers `/login` ou `/dashboard`)
  2. Header public avec nav
  3. Feature gating + badges Pro
  4. Banner promo dismissible
  5. Top-bar quota orange threshold (actuellement passe direct au rouge à 100%)
- [ ] **i18n debt** : `app/[locale]/dashboard/tests/[testId]/page.tsx` (debt notée par final reviewer Phase 8)
- [ ] **Postgres dev** : 2 instances tournent en local (brew + docker container). Docker container inutilisé. Décider : keep ou drop.
- [ ] **`docs/planning/pre-prod-checklist.md`** : doit être vidé à zéro avant `dev` → `main`. Items restants à trier.
