Cabinya
Application web multi-tenant de gestion RH — plannings de travail, congés, rôles et apparence personnalisable par organisation.
En bref
- Multi-tenant avec isolation des données par organisation
- Gestion fine des rôles et des permissions
- Thème et apparence personnalisables par organisation
Le projet
Cabinya gère les plannings de travail et les demandes de congés de plusieurs organisations sur une même instance. Chaque organisation dispose de ses utilisateurs, de ses règles, de ses rôles et de sa propre apparence — logo et palette de couleurs.
Architecture
Navigateur — Vue 3 + Vuetify 3
↓ HTTP
FastAPI (Uvicorn) — Swagger UI intégrée
↓ SQLAlchemy
PostgreSQL 16
Le tout est orchestré par docker-compose : un conteneur par couche, une commande pour démarrer l'ensemble.
Le point délicat
Le multi-tenant est facile à faire fonctionner et difficile à rendre sûr. Chaque requête doit être filtrée par organisation, et une seule requête qui oublie ce filtre suffit à exposer les données d'un client à un autre.
La réponse a été de porter le filtrage au niveau de la couche d'accès aux données plutôt que de le laisser à la charge de chaque endpoint : le contexte d'organisation est résolu à l'authentification, puis appliqué systématiquement — plutôt que rappelé à chaque requête, où il finit forcément par être oublié.
Fonctionnalités
- Plannings de travail par organisation, par équipe et par personne
- Demandes de congés avec circuit de validation
- Rôles et permissions granulaires
- Personnalisation de l'apparence par organisation
- API REST documentée automatiquement (Swagger)
Projet suivant
Globe Satellites