docs: extract publication and architecture sections to dedicated files
Move the "Publier le package" section from DEV.md to a new PUBLICATION.md file, and add references to ARCHITECTURE.md and PUBLICATION.md in the main DEV.md index. This reduces the size of DEV.md and improves discoverability by grouping related content into focused documents.
This commit is contained in:
+4
-50
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user