Modules
37 modules dashboard organisés en 8 sections de navigation.
Vue d'ensemble
HeartCo est organisé en modules indépendants. Chaque module correspond à une page dashboard, un router tRPC, et une entrée dans la navigation.
Sections et modules
Dashboard
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Tableau de bord | /dashboard | dashboard | Vue d'ensemble, KPIs, activité récente |
Copilote IA
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Copilote | /dashboard/copilote | copilote | Assistant IA conversationnel (Mistral) |
Commercial (7 modules)
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Pipeline CRM | /dashboard/crm | crm | Gestion des opportunités (kanban) |
| Clients | /dashboard/clients | clients | Fiches clients, historique, contacts |
| Fournisseurs | /dashboard/fournisseurs | suppliers | Gestion des fournisseurs |
| Rendez-vous | /dashboard/rendez-vous | appointments | Prise de RDV, calendrier |
| Marketing | /dashboard/marketing | marketing | Campagnes email, newsletters |
| Social Content | /dashboard/social-content | socialContent | Génération contenu réseaux sociaux |
| Assistant réglementaire | /dashboard/assistant-reglementaire | regulatoryAssistant | Veille réglementaire IA |
Facturation (11 modules)
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Factures | /dashboard/facturation | facturation | Création, envoi, suivi des factures |
| Devis | /dashboard/devis | devis | Devis, conversion en facture |
| Relances | /dashboard/relances | relances | Relances automatiques impayés |
| E-Facturation | /dashboard/e-invoicing | iopole | Factur-X, Chorus Pro (B2B/B2G) |
| Bons de livraison | /dashboard/bons-de-livraison | deliveryNotes | Bons de livraison |
| Factures reçues | /dashboard/factures-recues | receivedInvoices | Factures fournisseurs |
| Notes de frais | /dashboard/notes-de-frais | notesDefrais | Déclaration et approbation |
| Factures récurrentes | /dashboard/factures-recurrentes | recurringInvoices | Abonnements et récurrence |
| Catalogue produits | /dashboard/produits | products | Produits et services |
| Import CSV | /dashboard/import | — | Import de données |
| ISO 20022 | /dashboard/iso20022 | iso20022 | Virements SEPA |
Finance (3 modules)
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Comptabilité | /dashboard/comptabilite | comptabilite | Grand livre, export FEC |
| Analytics | /dashboard/analytics | analytics | Tableaux de bord, rapports |
| Stock | /dashboard/stock | stock | Gestion des stocks et inventaire |
Opérations (4 modules)
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Bons de travail | /dashboard/bons-de-travail | workOrders | Interventions terrain |
| Rapports | /dashboard/rapports | reports | Rapports d'intervention |
| Feuilles de temps | /dashboard/feuilles-de-temps | timesheets | Suivi du temps |
| SAV | /dashboard/sav | tickets | Tickets support client |
Équipe (4 modules)
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Membres | /dashboard/equipe | members | Gestion de l'équipe |
| RH | /dashboard/rh | rh | Congés, absences, profils employés |
| Validation temps | /dashboard/feuilles-de-temps | timesheets | Approbation feuilles de temps |
| Automatisations | /dashboard/automatisations | automation | Workflows automatiques |
Autres modules
| Module | Chemin | Router tRPC | Description |
|---|---|---|---|
| Paramètres | /dashboard/parametres | settings | Configuration organisation |
| Marketplace | /dashboard/marketplace | marketplace | Modules complémentaires |
| Projets | /dashboard/projets | projets | Gestion de projets |
| Agenda | /dashboard/agenda | calendarEvents | Calendrier partagé |
| Chat | /dashboard/chat | conversations | Messagerie interne |
| Idées | /dashboard/ideas | ideas | Boîte à idées |
| Itinéraires | /dashboard/itineraires | itineraires | Optimisation de tournées |
| Billing | /dashboard/billing | trial, freemium | Abonnement et facturation |
Configuration de la navigation
Fichier : src/lib/navigation/nav-config.ts
La sidebar est configurée via l'objet NAV_SECTIONS qui définit les sections, icônes, couleurs et items :
const NAV_SECTIONS: NavSection[] = [
{
id: "commercial",
label: "Commercial",
icon: Users,
color: "emerald",
description: "Gestion commerciale et CRM",
defaultOrder: 3,
children: [
{
id: "crm",
label: "Pipeline",
path: "/dashboard/crm",
icon: Target,
badge: "core",
moduleId: "MODULE_CRM",
},
// ...
],
},
// ...
];Couleurs des sections
Chaque section a une couleur sémantique (Tailwind) :
| Section | Couleur | Usage |
|---|---|---|
| Dashboard | indigo | Navigation principale |
| Copilote IA | violet | Intelligence artificielle |
| Commercial | emerald | Ventes et CRM |
| Facturation | amber | Finance et factures |
| Finance | sky | Comptabilité |
| Opérations | orange | Terrain et interventions |
| Équipe | teal | RH et gestion d'équipe |
Badges
Les modules affichent des badges pour indiquer leur type :
core— Inclus dans le planaddon— Module à la carte (payant)vertical— Module vertical (BTP, etc.)- Tags :
NEW,BETA,PRO
Activer / désactiver un module
Pour retirer un module de la navigation :
- Ouvrir
src/lib/navigation/nav-config.ts - Commenter ou supprimer l'item dans le tableau
childrende la section concernée - (Optionnel) Supprimer le router tRPC et la page dashboard
Le router tRPC peut rester en place même si le module est masqué dans la navigation — il ne sera simplement plus accessible via la sidebar.
Ajouter un nouveau module
1. Créer le router tRPC
// src/server/api/routers/mon-module.ts
import { createTRPCRouter, requirePermission } from "~/server/api/trpc";
import { z } from "zod";
export const monModuleRouter = createTRPCRouter({
list: requirePermission("mon_module:read")
.input(z.object({ page: z.number().default(1) }))
.query(async ({ ctx, input }) => {
return ctx.orgDb.monModel.findMany({
take: 20,
skip: (input.page - 1) * 20,
orderBy: { createdAt: "desc" },
});
}),
});2. Enregistrer le router
// src/server/api/root.ts
import { monModuleRouter } from "./routers/mon-module";
export const appRouter = createTRPCRouter({
// ... routers existants
monModule: monModuleRouter,
});3. Créer la page dashboard
src/app/dashboard/mon-module/
├── page.tsx # Page principale
└── layout.tsx # Layout (optionnel)
4. Ajouter à la navigation
// src/lib/navigation/nav-config.ts
// Dans la section appropriée, ajouter :
{
id: "mon-module",
label: "Mon Module",
path: "/dashboard/mon-module",
icon: Box,
badge: "core",
moduleId: "MODULE_MON_MODULE",
}5. (Optionnel) Ajouter la permission
Voir Permissions pour ajouter mon_module:read, mon_module:create, etc.