Skip to content

Architecture ​

Objectif ​

Le module réduit la duplication entre une application Nuxt et son backend Feathers. En mode embedded, l’application Feathers vit dans Nitro. En mode remote, Nuxt conserve le même modèle client et se connecte à un backend externe.

Responsabilités ​

Nuxt ​

Nuxt porte :

  • l’interface Vue ;
  • le SSR ;
  • les plugins client ;
  • les auto-imports de composables ;
  • la configuration de l’application.

Nitro et H3 ​

Nitro porte :

  • le serveur Nuxt ;
  • le cycle de vie de l’application ;
  • les middleware d’infrastructure ;
  • les endpoints strictement liés à l’hébergement HTTP ;
  • le branchement du runtime Feathers via @vevedh/feathers-nitro.

Feathers ​

Feathers porte :

  • les services métier ;
  • les méthodes standard et personnalisées ;
  • les hooks ;
  • l’authentification ;
  • l’autorisation ;
  • les événements ;
  • REST et Socket.IO.

Zod ​

Zod porte la validation et la description des données lorsque schema: zod est choisi.

API Feathers-first ​

Une fonctionnalité métier doit être modélisée comme un service :

ts
const service = app.service('articles')
const result = await service.find({ query: { $limit: 20 } })

Le client utilise le même chemin :

ts
const articles = useService('articles')
await articles.find({ query: { $limit: 20 } })

Le Builder suit cette règle avec les services nfz/*.

Instance runtime ​

La 6.5.x maintient une instance runtime default typée. Son état peut être :

  • initializing ;
  • ready ;
  • failed ;
  • closing ;
  • closed.

Les bridges attendent la promesse ready. Une initialisation échouée ne doit pas être masquée par un faux 404.

Secrets ​

Les secrets MongoDB et Keycloak sont résolus au runtime. Ils ne doivent pas être sérialisés dans les templates générés, .nuxt ou .output.

Compatibilité Nitro historique ​

Lorsque :

ts
feathers: {
  console: {
    enabled: true,
    legacyNitroRoutes: true,
  },
}

les anciennes routes /api/nfz/** sont enregistrées comme façades minces. Elles délèguent aux services Feathers nfz/* et sont marquées comme dépréciées.

Pour une nouvelle application :

ts
feathers: {
  console: {
    enabled: true,
    legacyNitroRoutes: false,
  },
}

Documentation utilisateur de nuxt-feathers-zod