diff --git a/docs/DEV.md b/docs/DEV.md index 549c2eb..bbb0267 100644 --- a/docs/DEV.md +++ b/docs/DEV.md @@ -4,6 +4,10 @@ Ce document couvre les conventions de code, les règles de sécurité et la proc Pour les conventions de rédaction : [LANGUE.md](./dev/LANGUE.md) et [REDACTION.md](./dev/REDACTION.md). +Pour l'architecture partagée (modules, composants, icônes) : [ARCHITECTURE.md](./dev/ARCHITECTURE.md). + +Pour la procédure de publication du package : [PUBLICATION.md](./dev/PUBLICATION.md). + --- ## Standards de code @@ -53,56 +57,6 @@ STRIPE_SECRET_KEY=... RESEND_API_KEY=... ``` -### Dépendances - -Avant chaque publication : - -```bash -npm audit -``` - -Ne pas publier avec des vulnérabilités de sévérité `high` ou `critical` non corrigées. - ### Erreurs exposées Les messages d'erreur retournés à l'utilisateur ne contiennent pas de détails internes : pas de stack trace, pas de nom de table, pas de requête SQL. On log côté serveur, on renvoie un message générique côté client. - ---- - -## Publier le package - -Le package `@zen/core` est publié sur le registre npm privé à `https://git.hyko.cx`. - -### Configurer l'authentification (une seule fois) - -Créer un token dans Gitea : **Settings → Applications → Generate Token**, puis : - -```bash -npm config set //git.hyko.cx/api/packages/zen/npm/:_authToken TOKEN -``` - -### Checklist avant publication - -- [ ] `npm audit` — aucune vulnérabilité `high` ou `critical` -- [ ] `npm run build` — build sans erreur ni warning TypeScript -- [ ] Version mise à jour dans `package.json` - -### Versionner - -On suit [semver](https://semver.org) : - -- **patch** (`1.3.x`) — correction de bug, sans changement d'interface -- **minor** (`1.x.0`) — nouvelle fonctionnalité, rétrocompatible -- **major** (`x.0.0`) — changement cassant - -```bash -npm version patch # ou minor, ou major -``` - -### Publier - -```bash -npm publish -``` - -Le script `prepublishOnly` lance le build automatiquement. Si le build échoue, la publication est annulée. diff --git a/docs/dev/ARCHITECTURE.md b/docs/dev/ARCHITECTURE.md new file mode 100644 index 0000000..7490ae4 --- /dev/null +++ b/docs/dev/ARCHITECTURE.md @@ -0,0 +1,34 @@ +# Architecture partagée + +Ces modules existent pour éviter la duplication. Avant d'écrire du code utilitaire, vérifier s'il est déjà couvert ici. + +### Utilitaires serveur + +| Besoin | Module | +|--------|--------| +| Logs serveur | `src/shared/lib/logger.js` | +| Manipulation de dates | `src/shared/lib/dates.js` | +| Configuration de l'app | `src/shared/lib/appConfig.js` | +| Formatage de devises | `src/shared/utils/currency.js` | + +### Composants et icônes + +**Icônes** — Toutes les icônes sont centralisées dans `src/shared/Icons.js`. Ne pas créer d'icône directement dans un composant. Si une icône manque, l'ajouter dans `Icons.js`. + +**Composants** — Utiliser `src/shared/components` en priorité. Si un besoin est réutilisable à plusieurs endroits et que le composant n'existe pas encore, le créer dans `src/shared/components` plutôt que dans le module. + +### Modules core + +**Notifications client** — Utiliser `src/core/toast` pour toutes les notifications côté client. + +**Stockage** — Utiliser `src/core/storage`. Toujours supprimer l'ancien fichier avant d'en écrire un nouveau à la même place. Éviter les fichiers fantômes (présents dans le stockage mais plus référencés dans l'app). + +**Paiements** — Utiliser `src/core/payments` pour tout ce qui touche au système de paiement. + +**Courriel** — Utiliser `src/core/email` pour l'envoi d'emails. Les gabarits réutilisables à l'échelle de l'app vont dans `src/core/email/templates`. Les gabarits spécifiques à un module peuvent rester dans les fichiers du module. + +**Base de données** — Utiliser `src/core/database` pour toutes les communications avec la BD. Toujours utiliser des requêtes paramétrées (voir la section Sécurité ci-dessus). + +**Tâches planifiées** — Utiliser `src/core/cron` pour créer des tâches cron. + +**API** — Utiliser `src/core/api` pour l'API admin et publique. Toujours définir l'API privée/admin en premier, puis exposer seulement ce qui doit l'être. Toujours vérifier l'authentification sur les routes qui l'exigent. \ No newline at end of file diff --git a/docs/dev/PUBLICATION.md b/docs/dev/PUBLICATION.md new file mode 100644 index 0000000..80cae60 --- /dev/null +++ b/docs/dev/PUBLICATION.md @@ -0,0 +1,37 @@ +# Publier le package + +Le package `@zen/core` est publié sur le registre npm privé à `https://git.hyko.cx`. + +### Configurer l'authentification (une seule fois) + +Créer un token dans Gitea : **Settings → Applications → Generate Token**, puis : + +```bash +npm config set //git.hyko.cx/api/packages/zen/npm/:_authToken TOKEN +``` + +### Checklist avant publication + +- [ ] `npm audit` — aucune vulnérabilité `high` ou `critical` +- [ ] `npm run build` — build sans erreur ni warning TypeScript +- [ ] Version mise à jour dans `package.json` + +### Versionner + +On suit [semver](https://semver.org) : + +- **patch** (`1.3.x`) — correction de bug, sans changement d'interface +- **minor** (`1.x.0`) — nouvelle fonctionnalité, rétrocompatible +- **major** (`x.0.0`) — changement cassant + +```bash +npm version patch # ou minor, ou major +``` + +### Publier + +```bash +npm publish +``` + +Le script `prepublishOnly` lance le build automatiquement. Si le build échoue, la publication est annulée. \ No newline at end of file