Tabibi is a healthcare platform API that connects patients and doctors in one secure workflow. Patients can discover doctors, manage their medical information, book and pay for appointments, communicate with doctors, and attend eligible video consultations. Doctors receive tools for managing schedules, appointments, prescriptions, and patient interactions, while administrators manage the platform’s core data and users.
- Patient and doctor registration with email confirmation and JWT authentication
- Doctor discovery by specialty, location, availability, and profile information
- Clinic-visit and video-call appointment booking with availability management
- Stripe payment processing, booking status management, and refunds
- Doctor schedules, appointment dashboards, patient details, and prescriptions
- Secure patient–doctor chat with real-time delivery through SignalR
- ZEGOCLOUD video-call token generation for confirmed appointments
- Medical profiles, favorites, reviews, notifications, and push notifications through Firebase Cloud Messaging
- AI-assisted symptom analysis using Google Gemini, including urgency and specialty suggestions
- Administrative dashboards for managing doctors, patients, departments, and cities
- Background processing for booking cleanup and appointment reminders
- OpenAPI documentation with Scalar
AI symptom analysis is an informational aid and is not a medical diagnosis.
- Platform: .NET 10 / ASP.NET Core Web API
- Data: SQL Server with Entity Framework Core and ASP.NET Core Identity
- Authentication: JWT bearer tokens with role-based authorization
- Real-time communication: SignalR
- Payments: Stripe
- Notifications: Firebase Cloud Messaging
- Email: MailKit and MimeKit via the
Tabibi.EmailServiceproject - Background jobs: Hangfire and hosted background services
- API documentation: OpenAPI and Scalar
Tabibi.API— the main REST API, database layer, authentication, business logic, real-time hub, and integrationsTabibi.EmailService— reusable SMTP email delivery service
- .NET 10 SDK
- SQL Server
- SMTP account for email confirmation and account recovery
- Credentials for the enabled external services: Stripe, Firebase, ZEGOCLOUD, and Google Gemini
-
Clone the repository and open the solution in Visual Studio or a terminal.
-
Configure the required settings using user secrets, environment variables, or a deployment secret store. Do not commit credentials to
appsettings.json. -
Apply the Entity Framework Core migrations:
dotnet ef database update --project Tabibi.API
-
Start the API:
dotnet run --project Tabibi.API
The development profiles use:
https://localhost:7096http://localhost:5242
The API expects configuration for the following areas:
ConnectionStrings:DatabaseJwtEmailConfigurationStripe:SecretKeyZegoCloud:AppIdandZegoCloud:ServerSecretGemini:ApiKey- Firebase Admin credentials used by the notification service
Use environment-specific configuration for local development and production. Any credentials previously stored in local configuration files should be rotated and moved to a secure secret store.
When the API is running, use Scalar to browse and test the documented endpoints:
https://localhost:7096/scalar/v1
The OpenAPI document is also available at:
https://localhost:7096/openapi/v1.json
The SignalR hub is available at /hub.