Aller au contenu
Tous les projets
2025·Conception et développement full-stackTerminé

Cabinya

Application web multi-tenant de gestion RH — plannings de travail, congés, rôles et apparence personnalisable par organisation.

Vue 3VuetifyFastAPIPythonPostgreSQLDocker

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