CinqCentral est l'outil interne de gestion de l'agence Cinq. Il centralise la gestion des projets, du CRM, de la finance, du suivi de temps et des tickets clients dans une seule application web.
- Dashboard — Vue d'ensemble de l'activite de l'agence
- CRM — Pipeline commercial, deals, propositions commerciales avec generation de devis
- Projets — Gestion de projets avec Kanban, Gantt, allocations par metier et charge de travail
- Tickets — Suivi de bugs/demandes clients, avec widget integrable sur les sites clients
- Timetracking — Saisie du temps par semaine, par projet et par categorie
- Finance — Suivi des transactions, previsionnel depenses/revenus, synchronisation Qonto
- Espace client — Portail client en lecture seule (projets, factures)
- Admin — Gestion des utilisateurs, roles et metiers
- Framework — Next.js 16 (App Router, React 19)
- ORM — Prisma 7 avec adapter MariaDB
- Base de donnees — MySQL / MariaDB
- Auth — Auth.js v5 (Google OAuth + Credentials)
- UI — Tailwind CSS 4, shadcn/ui (base-ui), Lucide icons
- Editeur riche — Tiptap
- TypeScript — Strict mode
- Node.js >= 20
- MySQL ou MariaDB (local ou distant)
git clone git@github.com:your-org/cinq-central.git
cd cinq-centralnpm installCreer un fichier .env.local a la racine :
# Base de donnees MySQL
DATABASE_URL="mysql://user:password@localhost:3306/cinq_central"
# Google OAuth
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# NextAuth
AUTH_SECRET=your-random-secret # generer avec: openssl rand -base64 32
NEXTAUTH_URL=http://localhost:3000
# Qonto API (optionnel)
QONTO_LOGIN=your-qonto-login
QONTO_SECRET_KEY=your-qonto-secret
# URL publique de l'app (pour le widget)
NEXT_PUBLIC_APP_URL=http://localhost:3000Si c'est une base vierge, importer le schema initial puis executer la migration V2 :
mysql -u user -p cinq_central < migration-v2.sqlPuis generer le client Prisma :
npx prisma generateDans la Google Cloud Console :
- Ajouter
http://localhost:3000/api/auth/callback/googlecomme URI de redirection autorisee - En production, ajouter aussi
https://votre-domaine.com/api/auth/callback/google
npm run devL'application est accessible sur http://localhost:3000.
npm run build
npm start# Installer PM2
npm install -g pm2
# Build et lancer
npm run build
pm2 start npm --name cinq-central -- start
# Persistence au redemarrage
pm2 save
pm2 startupserver {
listen 80;
server_name app.cinqteam.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}Les memes que pour le dev local, avec les valeurs de production :
DATABASE_URL— URL MySQL de productionAUTH_SECRET— Secret unique pour la productionNEXTAUTH_URL— URL publique (ex:https://app.cinqteam.com)NEXT_PUBLIC_APP_URL— Meme valeur queNEXTAUTH_URL
src/
app/
(app)/ # Routes authentifiees (dashboard, projets, crm, etc.)
api/ # Routes API (auth, widget, uploads)
login/ # Page de connexion
proposition/ # Pages publiques (propositions commerciales)
components/ # Composants UI reutilisables (shadcn/ui)
lib/ # Utilitaires (prisma, auth, roles, helpers)
generated/ # Client Prisma genere (gitignored)
prisma/
schema.prisma # Schema de la base de donnees
public/
widget.js # Widget JS integrable sur les sites clients
uploads/ # Fichiers uploades (gitignored)
- Server Components par defaut,
"use client"uniquement quand necessaire - Server Actions pour les mutations (fichiers
actions.tsdans chaque route) - Les
paramsNext.js sont desPromise(Next.js 16) — toujoursawait params - Prisma v7 : utiliser la syntaxe
connectpour les relations danscreate() - Ne jamais utiliser
prisma db push— modifier le schema puisnpx prisma generate - Les modifications de schema en production se font via des scripts SQL manuels
- Creer une branche depuis
main - Faire les modifications
- Verifier que le build passe :
npm run build - Creer une PR
| Role | Acces |
|---|---|
admin |
Acces complet + administration |
equipe |
Dashboard, projets, CRM, finance, tickets, timetracking |
client |
Espace client uniquement (projets, factures) |