feat(v1): bloquants release v1 — tests, stories, visual regression, gouvernance, publishing
Release / Release / open changeset PR (push) Has been cancelled
CI / Build, typecheck, test, a11y (push) Has been cancelled

6 chantiers v1 sur 7 livrés (DataTable refonte reportée car nécessite
2-3j en propre — TanStack Table + virtualisation + filter builder).

v1-A — Tests (4 → 22 fichiers) :
- Avatar, AvatarGroup, UserCard, MetricCard, ProfileHeader, Tooltip,
  Sheet, Drawer, Slider, ToggleGroup, Tabs, Pagination, Accordion,
  Switch, Badge, ConfirmDialog, Popover, Menu, Text, PricingCard,
  FeatureCard, Toast — chacun avec render + clavier + axe-core.

v1-B — Storybook (7 → 23 fichiers) :
- Avatar, UserCard, ProfileHeader, MetricCard, PricingCard,
  FeatureCard, Sheet (4 sides), HoverCard, Slider, ToggleGroup,
  Menu+ContextMenu, Toast (avec démo "Empiler 5"), Tabs,
  Pagination, Accordion, Badge.

v1-D — Visual regression Playwright :
- playwright.config.ts (light + dark, threshold strict 0.2)
- e2e/visual.spec.ts (20 stories critiques)
- Step CI + upload report en cas de fail

v1-E — Site doc Starlight rempli :
- 11 pages composants détaillées (Button, Input, Tooltip, Dialog,
  Toast, Avatar, ThemePicker, MetricCard, PricingCard, ToggleGroup,
  Slider) avec API, anatomie, do/don't, A11y.

v1-F — Publishing Verdaccio :
- verdaccio/config.yaml, docker-compose.verdaccio.yml, .npmrc
- README setup local + déploiement prod + backups + sécurité

v1-G — Gouvernance :
- LICENSE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md
- CODEOWNERS, PR template, 3 issue templates (bug/feature/rfc)

Bug fix bonus : tooltip dark mode (text-primary comme bg + text-inverse
comme texte → blanc-sur-blanc invisible). Remplacé par neutral-900/0
en light + bg-raised/text-primary en dark.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dinawo
2026-05-04 22:29:35 +02:00
parent 62317f2ad7
commit 133feff75d
69 changed files with 3433 additions and 7 deletions
+85
View File
@@ -0,0 +1,85 @@
# Verdaccio — registre privé DSMMG
Verdaccio est utilisé pour publier les packages `@managemate/*` en
interne, sans exposition publique. Le registre tourne en local via
Docker Compose et peut être déployé sur l'infra ManageMate
(`npm.dinawo.fr` recommandé).
## Démarrer en local
```sh
docker compose -f docker-compose.verdaccio.yml up -d
open http://localhost:4873
```
## Premier compte (admin)
```sh
npm adduser --registry http://localhost:4873
# Username: admin
# Password: <fort>
# Email: dev@managemate.fr
```
Le htpasswd est stocké dans le volume `dsmmg-verdaccio-storage`.
## Publier les packages
À partir du root du monorepo, après un build complet :
```sh
pnpm build
pnpm changeset version # consume les changesets, bump versions
pnpm -r --filter "@managemate/*" publish --registry http://localhost:4873
```
Ou via le script raccourci :
```sh
pnpm release
```
## Déploiement production
Le `docker-compose.verdaccio.yml` est utilisable tel quel sur un host
docker. Recommandations production :
1. **Reverse proxy** (Caddy, Nginx, Traefik) avec **HTTPS** obligatoire.
Exemple Caddy :
```caddy
npm.dinawo.fr {
reverse_proxy localhost:4873
}
```
2. **Backups** réguliers du volume `dsmmg-verdaccio-storage` (contient
les tarballs publiés et le htpasswd). Cible : snapshot quotidien
conservé 30j.
3. **Rate limiting** sur le reverse proxy (~ 60 req/min/IP) pour éviter
le bruteforce sur le htpasswd.
4. **Auth supplémentaire** possible : intégration LDAP/SAML via
`verdaccio-ldap` ou `verdaccio-saml` plugins si l'org grandit.
5. **Monitoring** : `/_stats/heap` exposé par Verdaccio, à scraper
par Prometheus si infra existe.
## Sécurité
- `auth: htpasswd` uniquement par défaut. Pas d'inscription publique
(max_users: 50 limite).
- `@managemate/*` : `access: $authenticated` — seuls les users
authentifiés peuvent installer.
- Le proxy `uplinks.npmjs` permet de récupérer les deps publiques
(Radix, React, etc.) en passant par Verdaccio (cache).
## Migration vers npm public (futur)
Si le DSMMG devient open source un jour :
1. Renommer le scope `@managemate` → `@managemate-group` (ou autre)
sur npm public.
2. Publier sur https://registry.npmjs.org en `--access public`.
3. Garder Verdaccio en cache local pour la CI.
+65
View File
@@ -0,0 +1,65 @@
# Verdaccio config — registre privé local pour le DSMMG
# Usage : docker compose -f docker-compose.verdaccio.yml up -d
# Puis : pnpm config set @managemate:registry http://localhost:4873
# Puis : pnpm publish -r --filter "@managemate/*"
storage: /verdaccio/storage
plugins: /verdaccio/plugins
web:
title: DSMMG — Registre privé ManageMate Group
primary_color: "#D12B6A"
scope: "@managemate"
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
max_users: 50
algorithm: bcrypt
rounds: 10
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
# Packages DSMMG — privés, accès restreint aux users authentifiés
"@managemate/*":
access: $authenticated
publish: $authenticated
unpublish: $authenticated
# Tout le reste tape sur npmjs en proxy
"@*/*":
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
"**":
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
# Logs
logs: { type: stdout, format: pretty, level: info }
# Sécurité
security:
api:
legacy: true
jwt:
sign:
expiresIn: 90d
verify:
someProp: [some, key]
web:
sign:
expiresIn: 7d
verify:
someProp: [some, key]