refactor(api): refactor API module with route definitions and response utilities
Restructure the core API module to improve clarity, consistency, and maintainability: - Introduce `defineApiRoutes()` helper for declarative route definitions with built-in config validation at startup - Add `apiSuccess()` / `apiError()` response utilities; enforce their use across all handlers (core and modules) - Move auth enforcement to route definitions (`auth: 'public' | 'user' | 'admin'`), removing manual auth checks from handlers - Extract core routes into `core-routes.js`; router now has no knowledge of specific features - Rename `nx-route.js` to `route-handler.js` and update package.json export accordingly - Update ARCHITECTURE.md to reflect new API conventions and point to `src/core/api/README.md` for details
This commit is contained in:
@@ -8,6 +8,8 @@ Pour l'architecture partagée (modules, composants, icônes) : [ARCHITECTURE.md]
|
||||
|
||||
Pour la procédure de publication du package : [PUBLICATION.md](./dev/PUBLICATION.md).
|
||||
|
||||
Pour les conventions de commit : [COMMITS.md](./dev/COMMITS.md).
|
||||
|
||||
> **Contexte projet** : les utilisateurs finaux créent leur projet via `npx @zen/start`, qui génère automatiquement une structure Next.js avec le CMS déjà intégré. Lors d'une assistance ou d'une revue, partez du principe que le projet cible est déjà structuré de cette façon.
|
||||
|
||||
---
|
||||
|
||||
@@ -31,4 +31,4 @@ Ces modules existent pour éviter la duplication. Avant d'écrire du code utilit
|
||||
|
||||
**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.
|
||||
**API** — Utiliser `src/core/api` pour l'API admin et publique. Définir les routes avec `defineApiRoutes()` (valide la config au démarrage). L'authentification est déclarée dans la définition de route (`auth: 'public' | 'user' | 'admin'`) — ne jamais la vérifier manuellement dans un handler. Retourner `apiSuccess()` / `apiError()` dans tous les handlers. Voir `src/core/api/README.md` pour le détail.
|
||||
@@ -0,0 +1,56 @@
|
||||
# Conventions de commit
|
||||
|
||||
Tous les messages de commit sont rédigés en **anglais**, en suivant le format [Conventional Commits](https://www.conventionalcommits.org/) :
|
||||
|
||||
```
|
||||
<type>(<scope>): <description courte>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Types
|
||||
|
||||
| Type | Usage |
|
||||
|------|-------|
|
||||
| `feat` | New feature |
|
||||
| `fix` | Bug fix |
|
||||
| `refactor` | Code restructuring without behavior change |
|
||||
| `style` | Formatting only (spaces, commas, no logic change) |
|
||||
| `docs` | Documentation only |
|
||||
| `test` | Add or update tests |
|
||||
| `chore` | Maintenance, dependencies, build config |
|
||||
| `perf` | Performance improvement |
|
||||
| `revert` | Revert a previous commit |
|
||||
|
||||
---
|
||||
|
||||
## Exemples
|
||||
|
||||
```
|
||||
feat(auth): add OAuth2 login support
|
||||
fix(api): handle null response from payment gateway
|
||||
refactor(storage): extract upload logic into helper
|
||||
docs(guide): add git commit message conventions
|
||||
chore(deps): update dependencies
|
||||
perf(db): cache user metadata on repeated reads
|
||||
revert: revert "feat(auth): add OAuth2 login support"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Règles
|
||||
|
||||
- **Scope** : facultatif, précise la zone touchée `auth`, `api`, `storage`, `ui`, `config`
|
||||
- **Description** : minuscules, sans point final, en anglais
|
||||
- Un commit = une intention. Ne pas mélanger fix et refactor
|
||||
- Pas de `wip`, `fix fix`, `oups` ou messages vides
|
||||
|
||||
## Breaking changes
|
||||
|
||||
Ajouter `!` après le type et un pied de page `BREAKING CHANGE:` :
|
||||
|
||||
```
|
||||
feat(api)!: remove legacy query parameter
|
||||
|
||||
BREAKING CHANGE: the `legacy` param is no longer accepted, use `version` instead.
|
||||
```
|
||||
@@ -16,22 +16,6 @@ Tout ce qui est **visible par l'utilisateur** est en **français** :
|
||||
- Slugs et noms de dossiers qui correspondent à des routes URL
|
||||
- Documentations, README.md
|
||||
|
||||
## Messages de commit Git
|
||||
|
||||
Tous les messages de commit doivent être rédigés en **anglais**, en suivant le format conventional commits :
|
||||
|
||||
```
|
||||
<type>(<scope>): <description courte>
|
||||
```
|
||||
|
||||
Types courants : `feat`, `fix`, `refactor`, `style`, `docs`, `test`, `chore`
|
||||
|
||||
Exemples :
|
||||
- `feat(auth): add OAuth2 login support`
|
||||
- `fix(api): handle null response from payment gateway`
|
||||
- `docs(guide): add git commit message conventions`
|
||||
- `chore(deps): update dependencies`
|
||||
|
||||
## Guide de rédaction
|
||||
|
||||
Se référer à `REDACTION.md` avant de rédiger tout contenu textuel.
|
||||
|
||||
Reference in New Issue
Block a user