Vue d’ensemble
La feature Tools est le cœur de Kit’Asso : un catalogue exhaustif d’outils numériques adaptés aux besoins des associations françaises. Statistiques :- 100+ outils référencés
- 4 tiers de pricing (Gratuit, Freemium, Payant, Entreprise)
- Système de catégorisation
- Comparaison côte à côte
- Favoris avec localStorage
Architecture technique
Composants principaux
API Layer
Fonctionnalités détaillées
1. Recherche avancée
Implémentation :src/hooks/useToolFilters.ts
- 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
Pourquoi virtualiser ?
- Affichage de 100+ outils sans lag
- Rendu uniquement des éléments visibles
- Mémoire optimisée
- Scroll fluide même sur mobile
- 1000 outils = même perf que 10
- FPS constant à 60
- Utilisation mémoire : ~20MB (vs 200MB sans virtualisation)
3. Mode comparaison
Route :/compare
Logique : src/hooks/useToolComparison.ts
- Sélection max : 2 outils
- Affichage côte à côte
- Comparaison des caractéristiques :
- Pricing
- Catégorie
- Features (tags)
- Description
- Liens externes
4. Système de favoris
Hook :src/hooks/useFavorites.ts
Stockage : LocalStorage (clé : kitasso_favorites)
- Sauvegarde automatique à chaque changement
- Chargement au mount
- Validation des IDs
- Gestion des erreurs (quota storage)
5. Upload de logos
API :toolsApi.uploadLogo(file)
Bucket Supabase : tool_logos
Workflow :
Base de données
Table tools
Relations
Catégorie (Many-to-One) :tool_features) :
RLS Policies
Types TypeScript
Testing
Tests API
Tests Hooks
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
- Virtualisation avec react-window
- Debounce sur recherche (300ms)
- Memoization avec React.memo
- Lazy loading des images
- Code splitting du modal admin
