Skip to main content

Principes de conception

Kit’Asso repose sur 3 piliers architecturaux :

1. Feature-Based Structure

Organisation par domaine métier plutôt que par type technique.
Avantages :
  • Isolation des fonctionnalités
  • Facilite le travail en équipe
  • Suppression/ajout de features sans impact

En savoir plus

Guide détaillé de l’approche feature-based

2. API Layer découplée via GraphQL

Séparation stricte entre les composants UI et l’accès aux données :
  • Composants → utilisent des Custom Hooks (useAppData, useToolFilters…)
  • Hooks → appellent l’API Layer (src/api/)
  • API Layer → communique avec Nhost/Hasura via GraphQL
  • Hasura → traduit en SQL vers PostgreSQL
La logique métier est dans les hooks, pas dans les composants ni dans l’API layer.

3. Patterns standardisés

Modals

Container / Form / Preview / Hook

Forms

React Hook Form + Zod

Icons

getIcon() via src/utils/icons.ts

Voir tous les patterns

Documentation complète des patterns

Schéma visuel


Structure de dossiers

Centralise toutes les interactions avec Nhost/Hasura :
  • client.ts : singleton Nhost
  • base.ts : wrappers apiCall/apiCallVoid + ApiError
  • Un fichier par domaine (tools, workflows, packs, quiz)
Chaque feature contient ses modals avec le pattern Container/Form/Preview/Hook :
  • index.tsx : orchestration
  • FeatureForm.tsx : formulaire d’édition
  • FeaturePreview.tsx : aperçu détaillé
  • useFeatureModal.ts : logique métier
Logique métier réutilisable :
  • useAppData : charge toutes les données
  • useToolFilters : search + filtres + catégories
  • useFavorites : gestion localStorage
  • useSmoothScroll : navigation single-page
Configuration des services tiers :
  • Auth context (Nhost Auth)
  • Storage helpers (Nhost Storage)
  • Error tracking (Sentry)

1

Comprendre l'approche feature-based

2

Explorer le backend Nhost

3

Découvrir l'API Layer


Principes directeurs

Modularité

Chaque feature peut être activée/désactivée indépendamment

Testabilité

La logique métier est découplée du framework

Type Safety

TypeScript strict + validation Zod partout

Performance

Code splitting, lazy loading, virtualisation
Ne contournez pas l’architecture feature-based en créant des dossiers par type technique à la racine. Passez toujours par l’API layer — jamais de nhost.graphql.request() directement dans les composants.