Vue d’ensemble
Kit’Asso utilise Nhost comme backend-as-a-service, qui fournit automatiquement une API GraphQL via Hasura au-dessus de PostgreSQL. Ce choix permet une mise en place rapide avec auto-génération des queries/mutations GraphQL, permissions granulaires, authentification intégrée et file storage.Stack backend
Nhost Cloud (eu-central-1) fournit :- PostgreSQL — Base de données relationnelle (13 tables)
- Hasura — API GraphQL auto-générée avec permissions par rôle
- Nhost Auth — Authentification email/password avec JWT
- Nhost Storage — Upload et stockage de fichiers (logos, assets)
Client Nhost
Fichier :src/api/client.ts
nhost.graphql.request({ query, variables })— requêtes GraphQLnhost.auth.signIn(...)/nhost.auth.signOut()— authentificationnhost.storage.upload(...)— upload de fichiers
Flux de données : GraphQL via Hasura
Comment ça fonctionne
- Le frontend envoie une query/mutation GraphQL via
nhost.graphql.request() - La requête atteint Hasura (auto-hosted par Nhost)
- Hasura traduit le GraphQL en SQL optimisé et l’exécute sur PostgreSQL
- Les permissions Hasura filtrent les résultats selon le rôle (public/user/admin)
- La réponse remonte au frontend
Exemple concret
Permissions Hasura (au lieu de RLS)
Kit’Asso utilise les permissions Hasura pour contrôler l’accès aux données, ce qui remplace le mécanisme Row Level Security (RLS) natif de PostgreSQL.Rôles
- public — Visiteurs non authentifiés
- user / admin — Utilisateurs authentifiés (JWT Nhost)
Règles par domaine
Contenu public (tools, categories, filters) :SELECT: autorisé pour public (tous les visiteurs)INSERT/UPDATE/DELETE: autorisé pour admin uniquement
SELECTpublic : uniquementstatus = 'active'ouis_active = trueSELECTadmin : tous les enregistrements (y compris drafts)INSERT/UPDATE/DELETE: admin uniquement
INSERTpublic : autorisé (soumission de quiz)SELECT: admin uniquement (analytics)
Configuration dans Hasura Console
Les permissions se configurent dans la console Hasura de votre projet Nhost :- Ouvrez la console Hasura (accessible via le dashboard Nhost)
- Allez sur une table → onglet Permissions
- Définissez les règles par rôle (public, user, admin)
- Ajoutez des row-level checks si nécessaire (ex:
status = 'active')
Authentification Nhost
Flux d’authentification
Implémentation
Fichier :src/lib/auth.tsx
Le contexte d’authentification utilise nhost.auth :
- Stockage du JWT en mémoire
- Refresh automatique du token avant expiration
- Injection du header
Authorization: Bearer <token>dans les requêtes GraphQL
Nhost Storage
Upload de fichiers
Fichier :src/lib/storage.ts
Kit’Asso utilise Nhost Storage pour stocker les logos des outils et les assets du site.
Validation côté client
Variables d’environnement
URLs Nhost générées
À partir du subdomain et region, Nhost construit automatiquement :- GraphQL :
https://{subdomain}.hasura.{region}.nhost.run/v1/graphql - Auth :
https://{subdomain}.auth.{region}.nhost.run/v1 - Storage :
https://{subdomain}.storage.{region}.nhost.run/v1
Ressources
API Layer
apiCall, apiCallVoid et exemples GraphQL
Database Schema
Structure des 13 tables PostgreSQL
Permissions
Détail des permissions Hasura par table
Nhost Docs
Documentation officielle Nhost