GMAO MaintiFlow - maintenance, équipements, stock, achats et gammes
  • TypeScript 99.3%
  • CSS 0.5%
  • JavaScript 0.2%
Find a file
2026-07-19 13:39:14 +02:00
prisma feat: afficher les annonces du manager 2026-07-19 13:39:14 +02:00
public feat: adapter la GMAO aux offres KiPilot 2026-07-17 21:36:48 +02:00
src feat: afficher les annonces du manager 2026-07-19 13:39:14 +02:00
tests feat: generer des codes agent opaques 2026-07-19 13:09:32 +02:00
.env.example feat: adapter la GMAO aux offres KiPilot 2026-07-17 21:36:48 +02:00
.gitignore feat: finalize SQLite-backed MaintiFlow MVP 2026-07-17 17:00:49 +02:00
eslint.config.mjs feat: fiabiliser les flux GMAO de bout en bout 2026-07-17 20:49:31 +02:00
next.config.mjs feat: fiabiliser les flux GMAO de bout en bout 2026-07-17 20:49:31 +02:00
package-lock.json feat: adapter la GMAO aux offres KiPilot 2026-07-17 21:36:48 +02:00
package.json feat: adapter la GMAO aux offres KiPilot 2026-07-17 21:36:48 +02:00
postcss.config.mjs Initial commit — MaintiFlow (GMAO) déployable sur Kivora 2026-07-17 15:13:13 +02:00
PRODUCT.md feat: adapter la GMAO aux offres KiPilot 2026-07-17 21:36:48 +02:00
README.md feat: adapter la GMAO aux offres KiPilot 2026-07-17 21:36:48 +02:00
tailwind.config.ts feat: fiabiliser les flux GMAO de bout en bout 2026-07-17 20:49:31 +02:00
tsconfig.json feat: fiabiliser les flux GMAO de bout en bout 2026-07-17 20:49:31 +02:00

KiPilot

KiPilot est une GMAO pour piloter les équipements, les ordres de travail, la maintenance préventive, le stock et les achats depuis une interface unique.

Stack

  • Next.js 14 et React 18
  • TypeScript et Tailwind CSS
  • Prisma 5 avec SQLite
  • Sessions sécurisées par cookie HTTP-only
  • pdf-lib pour les rapports PDF

Fonctionnalités actives selon l'offre

  • Tableau de bord alimenté par SQLite: ordres actifs, urgences, retards, MTTR et disponibilité.
  • Équipements: création, modification, documents, historique et indicateurs de fiabilité.
  • Ordres de travail: checklist, commentaires, main-d'œuvre, pièces, rapport et clôture.
  • Gammes préventives: récurrences calendaires ou compteur et génération d'OT sans doublon.
  • Stock et achats: seuils, mouvements, demandes, commandes et réceptions.
  • Fournisseurs et utilisateurs: création et modification persistées.
  • Planning hebdomadaire navigable.
  • Recherche globale alimentée par la base.
  • Rapports dynamiques avec exports CSV et PDF.
  • Authentification par email et mot de passe avec contrôle des rôles.

Les anciennes routes /preventive et /work-requests redirigent vers /work-orders.

Offres et quotas

Offre Mensuel HT Annuel HT Sites Comptes maintenance
KiPilot Essentiel 29 € 290 € 1 2
KiPilot Pro 69 € 690 € 1 5
KiPilot Entreprise 129 € 1 290 € 3 15
KiPilot Sur mesure Dès 199 € Sur devis Personnalisé Personnalisé

Les utilisateurs avec le rôle REQUESTER sont gratuits, illimités et ne consomment pas de siège maintenance. Le stock, le planning, les check-lists, les statistiques, les notifications et les exports sont disponibles à partir de KiPilot Pro.

Le manager peut lire ou affecter une offre via GET /api/internal/subscription et PUT /api/internal/subscription. L'appel doit envoyer Authorization: Bearer <KIPILOT_MANAGER_TOKEN>. Exemple de corps PUT :

{
  "plan": "PRO",
  "billingCycle": "ANNUAL",
  "status": "ACTIVE"
}

Démarrage local

npm install
Copy-Item .env.example .env
npx prisma migrate deploy
npm run dev

Ouvrir http://localhost:3000.

Au premier accès, KiPilot crée l'organisation, les rôles, les sites et les comptes autorisés par l'offre configurée. Avec la configuration locale par défaut, utiliser :

Email: camille.moreau@example.fr
Mot de passe: valeur de BOOTSTRAP_PASSWORD

Le fallback de développement est demo1234 lorsque BOOTSTRAP_PASSWORD est absent. Il ne doit pas être utilisé en production.

Configuration

Variable Usage
DATABASE_URL Fichier SQLite, généralement file:./dev.db
SESSION_SECRET Signature des sessions, obligatoire en production
BOOTSTRAP_PASSWORD Mot de passe initial des comptes bootstrap
NEXT_PUBLIC_BUSINESS_NAME Nom de l'organisation initiale
BUSINESS_CITY Ville utilisée pour nommer le premier site
KIPILOT_PLAN Offre initiale : ESSENTIAL, PRO, ENTERPRISE ou CUSTOM
KIPILOT_MANAGER_TOKEN Jeton privé de l'API /api/internal/subscription
NEXT_PUBLIC_SALES_EMAIL Contact affiché sur la page Abonnement

Une base est liée à une seule organisation. Les utilisateurs et sites restent isolés dans ce fichier SQLite.

Scripts

Commande Description
npm run dev Serveur de développement
npm run build Build de production avec contrôle TypeScript
npm start -- -p 3000 Serveur de production
npm test Tests unitaires Node/TypeScript
npm run prisma:generate Régénère le client Prisma
npm run prisma:migrate Crée et applique une migration en développement
npx prisma migrate deploy Applique les migrations en production
npm run prisma:studio Ouvre l'explorateur SQLite

Structure des données

prisma/
  schema.prisma       Schéma SQLite
  migrations/         Historique des migrations
  dev.db              Base locale, non destinée au dépôt
src/lib/
  auth.ts             Lecture et validation des sessions
  auth-actions.ts     Connexion et déconnexion
  db.ts               Client Prisma et bootstrap initial
  queries.ts          Requêtes de lecture
  actions.ts          Mutations et permissions
  preventive.ts       Calcul pur des récurrences

Sécurité et production

  • Définir un SESSION_SECRET long et aléatoire.
  • Définir BOOTSTRAP_PASSWORD avant le premier démarrage.
  • Servir l'application en HTTPS afin que le cookie de session soit marqué Secure.
  • Exécuter npx prisma migrate deploy avant npm start.
  • Sauvegarder régulièrement le fichier SQLite indiqué par DATABASE_URL.

L'authentification actuelle convient à un déploiement interne mono-organisation. La récupération autonome du mot de passe et la double authentification ne sont pas encore implémentées.