Kintai est une plateforme de gestion de planning d'entreprise ultra-légère, conçue pour les structures multi-magasins. Contrairement aux solutions lourdes basées sur des frameworks comme Laravel ou Symfony, Kintai utilise un moteur PHP sur mesure, optimisé pour la rapidité et la portabilité.
URL : https://kintai-lv1b.onrender.com
Note : L'instance tourne sur le plan gratuit de Render. Un premier accès peut prendre 30 à 60 secondes le temps que le conteneur démarre (cold start). Les données sont réinitialisées à chaque redémarrage.
Ces comptes sont créés automatiquement par les seeders lors de l'installation.
| Champ | Valeur |
|---|---|
admin@kintai.local |
|
| Mot de passe | Admin1234! |
| Rôle | Super Administrateur |
| Nom | Mot de passe | |
|---|---|---|
| Alice Martin | alice.martin@kintai.local |
Staff1234! |
| Bob Dupont | bob.dupont@kintai.local |
Staff1234! |
| Chloé Tanaka | chloe.tanaka@kintai.local |
Staff1234! |
| Yuki Yamamoto | yuki.yamamoto@kintai.local |
Staff1234! |
| David Leblanc | david.leblanc@kintai.local |
Staff1234! |
| Emma Sato | emma.sato@kintai.local |
Staff1234! |
- Fonctionnalités Clés
- Architecture Technique
- Installation & Déploiement
- Configuration
- API REST
- Guide du Développeur
- Base de Données
- Roadmap
- Multi-Magasins : Isolation des données par store avec configurations locales (Devise, Fuseau horaire).
- Planification Visuelle : Calendrier mensuel, hebdomadaire et vue Timeline.
- Gestion des Échanges : Validation des demandes d'échange de shifts entre employés.
- Contrôle des Congés : Workflow complet d'approbation/refus des demandes de temps libre.
- Audit Log : Traçabilité totale des modifications (qui a modifié quoi et quand).
- Import Excel : Module d'importation de shifts et d'employés via fichiers Excel.
- Tableau de Bord : Vue immédiate sur le prochain shift et les statistiques mensuelles.
- Disponibilités : Interface permettant aux employés d'indiquer leurs créneaux préférés.
- Bourse d'Échanges : Possibilité de proposer un shift à ses collègues en un clic.
- Simulateur de Salaire : Calcul en temps réel basé sur les taux horaires configurés.
Le projet suit une architecture S.O.L.I.D. et utilise les standards modernes du PHP (PSR-4, Strict Types).
- Container (DI) : Un conteneur d'injection de dépendances gérant l'auto-résolution par réflexion.
- Router : Système de routage avancé supportant les groupes, les noms de routes, les paramètres regex et les middlewares.
- Middleware Pipeline : Chaîne de responsabilité permettant de décorer les requêtes (Auth, Admin, I18n, JSON).
- Persistence Abstraction : Utilisation du Repository Pattern pour découpler la logique métier du stockage.
Kintai est capable de fonctionner avec trois moteurs différents sans modification de code :
- SQLite : Idéal pour 90% des déploiements.
- MySQL : Pour les gros volumes et la haute disponibilité.
- JsonDB : Un pilote custom stockant les données dans des fichiers
.json(zéro dépendance DB).
- PHP 8.3+ avec extensions :
pdo_sqlite,pdo_mysql,mbstring,gd,intl. - Composer 2.x.
- Un serveur web (Apache/Nginx) ou le serveur interne PHP.
# 1. Cloner et installer les dépendances
git clone https://github.com/AudricSan/kintai.git
cd kintai
composer install
# 2. Lancer l'assistant d'installation
php install.phpPour que le routage fonctionne correctement, assurez-vous que mod_rewrite est activé.
- Placez le projet dans
htdocs/Kintai. - Configurez votre DocumentRoot vers
public/ou accédez viahttp://localhost/Kintai/public/. - Le fichier
.htaccessfourni danspublic/gérera automatiquement les URLs propres.
Les fichiers de configuration se trouvent dans /config :
| Fichier | Description |
|---|---|
app.php |
Nom de l'app, mode Debug, Timezone par défaut. |
database.php |
Choix du driver et identifiants de connexion. |
routes.php |
Définition de toutes les routes Web et API. |
middleware.php |
Liste des middlewares globaux et nommés. |
Astuce : Créez un fichier database.local.php pour surcharger la configuration de base sans l'envoyer sur Git.
Kintai expose une API complète pour l'intégration tierce. Toutes les routes API commencent par /api.
GET /api/users: Liste des utilisateurs.GET /api/shifts?store_id=1: Shifts d'un magasin.POST /api/timeoff-requests: Créer une demande de congé.
Format de réponse : JSON standard. Authentification : Basée sur les sessions web ou via Header (extensible).
- Route : Définissez la route dans
config/routes.php.$router->get('/nouvelle-page', [MonController::class, 'index']);
- Controller : Créez votre classe dans
src/UI/Controller/Web/.public function index(Request $request): Response { return Response::html($this->view->render('ma-vue')); }
- Repository : Si vous touchez à la DB, ajoutez une interface dans
src/Core/Repositories/et liez-la dansApplication.php.
./vendor/bin/phpunit- users : Comptes utilisateurs et authentification.
- stores : Établissements physiques.
- shifts : Sessions de travail planifiées.
- shift_types : Catégories (Matin, Soir, etc.) avec icônes et couleurs.
- timeoff_requests : Congés et absences.
- audit_log : Historique des modifications.
Le système de migration est intégré. Pour ajouter une table :
- Créez un fichier
.sqldansdatabase/migrations/sqlite/etmysql/. - Créez un fichier
.jsondansdatabase/migrations/jsondb/. - Relancez
php install.phpou utilisez le script de migration dédié.
- Interface Mobile PWA : Utilisation hors-ligne.
- IA Planning : Suggestion automatique de shifts basée sur l'historique.
- Webhooks : Notifications vers Slack/Discord lors d'un changement de shift.
- Mode Sombre : Interface UI complète en Dark Mode.
Ce projet est publié sous licence GNU Affero General Public License v3.0.
- Vous pouvez utiliser, modifier et redistribuer le code librement, y compris à des fins commerciales.
- Toute version modifiée déployée sur un réseau doit rendre son code source disponible.
- Voir le fichier LICENSE pour le texte complet.