Logo Lanfrica

Libasse27/sih-saas

Domaine:

healthcare

Type de record:

software
Créateur:
Lib
Hôte:
Développer une plateforme SaaS que plusieurs établissements de santé indépendants (hôpitaux, cliniques) utilisent simultanément, chacun disposant d'un Système de Gestion Hospitalière (SIH) complet. Contexte sénégalais / ouest-africain : interface en français, devise FCFA, fuseau Africa/Dakar, locale fr-SN, téléphone +221, identifiant patient IDH. # SIH SaaS — Plateforme Multi-Établissements de Gestion Hospitalière Monorepo pnpm. Voir `docs/phase-0/` pour le cadrage complet (cartographie, modèle de données, isolation multi-tenant, RBAC, architecture, plan de phases). ## Structure ``` apps/ api/ Backend NestJS (PostgreSQL + MongoDB + Redis) — voir apps/api/README.md desktop/ Console Electron + Vue (super-admin / établissement) — voir apps/desktop/README.md mobile/ App React Native patient — voir apps/mobile/README.md packages/ shared/ Types et enums partagés (scope, rôles, permissions, contrats API) docs/ phase-0/ Documents de cadrage et conception ``` ## Démarrage (développement) ```bash pnpm install pnpm docker:dev:up # PostgreSQL + MongoDB + Redis cp apps/api/.env.example apps/api/.env pnpm --filter @sih-saas/api migration:run pnpm --filter @sih-saas/api seed:rbac pnpm --filter @sih-saas/api seed:super-admin pnpm dev:api ``` API disponible sur `localhost`, documentation Swagger sur `localhost`. ## Tests ```bash pnpm test:api # tests unitaires (mocks, pas de DB requise) pnpm --filter @sih-saas/api test:integration # tests d'isolation multi-tenant réels (Postgres + Mongo démarrés) ``` > Important : le backend se connecte à PostgreSQL avec le rôle **`sih_saas_app`** (non-superuser), > créé automatiquement à la première initialisation du conteneur via > `infrastructure/docker/postgres-init/01-create-app-role.sql`. Ne jamais faire connecter l'app > avec le rôle bootstrap `sih_saas` (superuser) — PostgreSQL ignore toujours les policies RLS pour > un superuser, quel que soit `FORCE ROW LEVEL SECURITY`. Voir docs/phase-0/strategie-isolation.md §2. ## Générer une nouvelle migration Toujours cibler explicitement `src/database/migrations/ ` (le datasource utilisé en interne est le build compilé `dist/`, mais le fichier de migration généré doit être écrit dans `src/` pour rester versionné — `dist/` est régénéré à chaque build) : ` …