- TypeScript 99.3%
- CSS 0.5%
- JavaScript 0.2%
| prisma | ||
| public | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| eslint.config.mjs | ||
| next.config.mjs | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| PRODUCT.md | ||
| README.md | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
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-libpour 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_SECRETlong et aléatoire. - Définir
BOOTSTRAP_PASSWORDavant le premier démarrage. - Servir l'application en HTTPS afin que le cookie de session soit marqué
Secure. - Exécuter
npx prisma migrate deployavantnpm 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.