← Retour à la marketplaceVoir les projets →
👥
CRM
⭐ RecommandéGestion de la relation client : contacts, entreprises, opportunités, historique.
CRMMoyen~8 joursv1.1.0
Module CRM complet avec gestion des contacts, entreprises, pipeline d'opportunités, historique des interactions, tags, notes et activités. Conçu pour s'intégrer avec les modules Facturation et Emails.
crmcontactscompaniespipelinesales
Dépendances requises :
📋 Schéma Prisma
// === Module CRM ===
enum ContactStatus {
LEAD
PROSPECT
CLIENT
INACTIVE
}
enum OpportunityStage {
NEW
QUALIFIED
PROPOSAL
NEGOTIATION
WON
LOST
}
model Company {
id String @id @default(cuid())
name String
website String?
industry String?
size String?
address String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
contacts Contact[]
@@map("companies")
}
model Contact {
id String @id @default(cuid())
email String @unique
firstName String
lastName String
phone String?
status ContactStatus @default(LEAD)
companyId String?
company Company? @relation(fields: [companyId], references: [id])
tags String[]
notes String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
opportunities Opportunity[]
activities Activity[]
@@map("contacts")
}
model Opportunity {
id String @id @default(cuid())
title String
contactId String
contact Contact @relation(fields: [contactId], references: [id])
stage OpportunityStage @default(NEW)
value Decimal?
probability Int?
expectedAt DateTime?
wonAt DateTime?
lostAt DateTime?
lostReason String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("opportunities")
}
model Activity {
id String @id @default(cuid())
contactId String
contact Contact @relation(fields: [contactId], references: [id])
type String // email, call, meeting, note
subject String
body String?
doneAt DateTime @default(now())
createdAt DateTime @default(now())
@@map("activities")
}🔌 Endpoints API
## API CRM GET /api/contacts # Liste paginée (filtres: status, tag, company) POST /api/contacts # Créer un contact GET /api/contacts/:id # Détail + historique PUT /api/contacts/:id # Modifier DELETE /api/contacts/:id # Supprimer POST /api/contacts/:id/notes # Ajouter une note POST /api/contacts/:id/activities # Ajouter une activité GET /api/companies # Liste entreprises POST /api/companies # Créer GET /api/companies/:id # Détail + contacts PUT /api/companies/:id # Modifier GET /api/opportunities # Pipeline (groupé par stage) POST /api/opportunities # Créer PUT /api/opportunities/:id/stage # Changer de stage PUT /api/opportunities/:id # Modifier
🛠️ Guide d'implémentation
## Implémentation CRM ### Étape 1 — Modèles DB Intégrer les modèles (Company, Contact, Opportunity, Activity) dans le schéma Prisma. ### Étape 2 — Service couche Créer `src/lib/crm/` avec : - contactService.ts — CRUD + recherche - companyService.ts — CRUD - opportunityService.ts — CRUD + transitions stage - activityService.ts — log des interactions ### Étape 3 — Routes API Implémenter toutes les routes avec validation Zod. Pagination cursor-based sur les listes. ### Étape 4 — UI - Liste contacts (tableau filtrable + recherche) - Fiche contact (détail + timeline activités) - Vue pipeline Kanban (colonnes par stage) - Formulaire contact/entreprise ### Étape 5 — Recherche Implémentation d'une recherche full-text sur nom, email, entreprise.
Prêt à installer ce module ?
Ajoutez-le à un projet existant depuis la page modules du projet.