Logo Lanfrica

iano-20/Tsabo_Apps

Domain:

healthcare

Record type:

software
Creator:
ian
Host:
Tsabo est une plateforme de santé numérique destinée à faciliter l'accès aux soins à Madagascar. ## Vision : Connecter les patients et les professionnels de santé grâce à une plateforme numérique simple, accessible et sécurisée. ## Cloner ```powershell git clone github.com ``` ## Démarrage Back ```powershell cd api npm install npm run start:dev ``` ## Démarrage Front ```powershell cd frontend-tsabo Copy-Item .env.example .env.local npm install npm run dev ``` API : `localhost`. Frontend : `localhost` ## Architecture frontend ```text src/ ├── app/ │ ├── login, register │ ├── patient/ │ │ ├── doctors/[id] recherche, profil, créneaux, réservation │ │ ├── appointments/[id] liste, détail, annulation │ │ └── profile profil + photo │ ├── doctor/ │ │ ├── availabilities CRUD + activation + couleurs │ │ ├── appointments/[id] confirmation, refus, fin, annulation │ │ └── profile profil pro + spécialités + photo │ └── admin/ │ ├── users comptes │ ├── doctors vérification │ ├── appointments/[id] supervision │ └── specialties catalogue ├── components/ shell, protections de rôles, UI ├── contexts/AuthContext.tsx JWT et session ├── lib/api/ client et fonctions de tous les endpoints ├── lib/time.ts affichage zoné Madagascar └── types/ contrats TypeScript ``` ## Règle horaire obligatoire 1. `DoctorAvailability.startTime/endTime` représentent une heure murale `HH:mm` à Madagascar. 2. Le backend transforme `YYYY-MM-DD + HH:mm + Indian/Antananarivo` en véritable instant UTC avec `fromZonedTime`. 3. `Appointment.startAt/endAt` sont enregistrés en UTC par PostgreSQL/Prisma. 4. L’API renvoie des ISO avec `Z` ; le frontend envoie directement `selectedSlot.startAt`, sans enlever `Z`, sans ajouter trois heures et sans reconstruire la date. 5. L’affichage utilise `NEXT_PUBLIC_CLINIC_TIMEZONE=Indian/Antananarivo`. Un utilisateur en Guyane et un utilisateur à Madagascar voient donc l’heure du cabinet identique. 6. `new Date()` rep …