Skip to main content

Vue d’ensemble

La feature Tools est le cœur de Kit’Asso : un catalogue d’outils numériques adaptés aux besoins des associations. Statistiques :
  • 35+ outils référencés
  • 4 tiers de pricing (Gratuit, Freemium, Payant, Entreprise)
  • Système de catégorisation par domaine
  • Comparaison côte à côte (max 2 outils)
  • Favoris avec localStorage

Architecture technique

Composants principaux

API Layer (GraphQL)

Toutes les opérations passent par apiCall() / apiCallVoid() + nhost.graphql.request() :
Query GraphQL type :

Fonctionnalités détaillées

1. Recherche avancée

Implémentation : src/hooks/useToolFilters.ts
Caractéristiques :
  • Debounce de 300ms pour la recherche texte
  • Filtrage multi-critères (pricing + catégorie)
  • Combinaison ET des filtres
  • Performance optimisée avec useMemo

2. Grille virtualisée

Composant : VirtualizedToolsGrid.tsx Utilise react-window pour le rendu performant. Seuls les éléments visibles dans le viewport sont rendus. Configuration :

3. Mode comparaison

Route : /compare Logique : src/hooks/useToolComparison.ts
  • Sélection max : 2 outils
  • Affichage côte à côte des caractéristiques (pricing, catégorie, features, description, liens)

4. Système de favoris

Hook : src/hooks/useFavorites.ts Stockage : LocalStorage (clé : kitasso_favorites)

5. Upload de logos

Backend : Nhost Storage

Base de données

Table tools

Relations via GraphQL

Catégorie (Many-to-One) :
Features (Many-to-Many via tool_features) :

Permissions Hasura

  • public : SELECT autorisé sur toutes les lignes
  • admin : SELECT, INSERT, UPDATE, DELETE autorisés

Types TypeScript


Bonnes pratiques

✅ À faire

❌ À éviter


Performance

Métriques cibles :
  • Temps de chargement initial : < 2s
  • Temps de recherche : < 100ms
  • FPS scroll : 60
  • Mémoire utilisée : < 50MB
Optimisations :
  • Virtualisation avec react-window
  • Debounce sur recherche (300ms)
  • Memoization avec React.memo
  • Lazy loading des images
  • Code splitting du modal admin

Ressources

Workflows

Parcours guidés étape par étape

Tool Packs

Collections curées d’outils

API Layer

Architecture API GraphQL

Testing

Écrire des tests pour vos features