Vue d’ensemble
Kit’Asso utilise 13 tables PostgreSQL organisées en 4 domaines fonctionnels. La base de données est conçue pour supporter un catalogue d’outils, des workflows guidés, des packs curés et un système de quiz avec recommandations personnalisées. Architecture :- Core Tables (5) : tools, categories, filters, tool_features, site_assets
- Workflow Tables (2) : workflows, workflow_steps
- Pack System (2) : tool_packs, pack_tools
- Quiz System (4) : quizzes, quiz_questions, quiz_answers, quiz_recommendations, quiz_responses
- 43+ migrations tracking l’évolution du schéma
- Row Level Security (RLS) activée sur toutes les tables
- Indexes pour optimiser les requêtes fréquentes
- Contraintes CHECK pour validation des données
Core Tables
1. tools
Table principale du catalogue d’outils numériques. Colonnes :name: Unique, requisdescription: Requispricing_tier: Enum strict (4 valeurs)category_id: Foreign key nullable (SET NULL on delete)
2. categories
Classification des outils par domaine d’activité. Colonnes :name: Unique, requis
- Communication
- Gestion de projet
- Comptabilité
- Marketing
- Événementiel
- Formation
3. filters
Définitions de fonctionnalités et capacités des outils. Colonnes :4. tool_features (Join Table)
Relation many-to-many entre tools et filters. Colonnes :- Unique constraint sur (tool_id, filter_id) pour éviter les doublons
- CASCADE on delete : si un tool ou filter est supprimé, les relations disparaissent
5. site_assets
Gestion centralisée des assets du site (logos, images). Colonnes :name: Unique (identifiant de l’asset)url: URL Supabase Storage
Workflow Tables
6. workflows
Parcours guidés étape par étape pour la transformation numérique. Colonnes :difficulty: Enum (débutant, intermédiaire, expert)status: Enum (active, draft)steps: JSONB array avec structure définie
7. workflow_steps
Détails enrichis des étapes de workflow. Colonnes :workflow_id: CASCADE on deletewarning_severity: Enum (warning, danger, info)
Pack System
8. tool_packs
Collections curées d’outils pour des cas d’usage spécifiques. Colonnes :difficulty: Nullable, enum si définistatus: Enum (active, draft)
- “Starter Pack” (débutant, icon: Rocket, color: blue)
- “Communication & Email” (intermédiaire, icon: Mail, color: green)
- “Automatisation” (expert, icon: Zap, color: orange)
9. pack_tools (Join Table)
Relation many-to-many entre packs et tools avec ordering. Colonnes :- Unique (pack_id, tool_id) : un outil ne peut être qu’une fois dans un pack
- CASCADE on delete : si pack ou tool supprimé, relation disparaît
Quiz System
10. quizzes
Définitions des quiz de diagnostic. Colonnes :slug: Unique (pour routing /quiz/:slug)is_active: Boolean pour activer/désactiver
11. quiz_questions
Questions du quiz avec types variés. Colonnes :question_type: Enum (single, multiple, scale)order_index: Définit l’ordre d’affichage
12. quiz_answers
Options de réponse pour les questions. Colonnes :13. quiz_recommendations
Règles de recommandation basées sur les réponses. Colonnes :14. quiz_responses
Soumissions des utilisateurs avec recommandations. Colonnes :Relations et Cardinalités
Schéma relationnel :- Suppression d’un
tool→ supprime sestool_featuresetpack_tools - Suppression d’un
workflow→ supprime sesworkflow_steps - Suppression d’un
quiz→ supprimequestions,answers,recommendations,responses - Suppression d’une
category→ SET NULL surtools.category_id
