A web-based platform that connects patients with doctors, enabling location-based doctor discovery, appointment management, and secure communication.
Built by Team 4 as part of the ReGen Academy program.
| Layer | Technology |
|---|---|
| Backend | ASP.NET Core Web API (.NET 10) |
| Database | Microsoft SQL Server |
| Authentication | JWT (JSON Web Tokens) |
| Messaging | RabbitMQ |
| Geolocation | IP-based & Browser-based location services |
- ApplicationUser: The base user of the system. Stores personal information such as name, email, password, address, and geolocation coordinates.
- Doctor: Extends the user with medical information such as specialty, bio, and average rating. Manages availability slots.
- Patient: Extends the user with medical notes. Can search for doctors and book appointments.
- AvailabilitySlot: Represents a time slot that a doctor has marked as available for appointments.
- Appointment: Represents a booking between a patient and a doctor, with a status lifecycle of Pending → Confirmed / Declined / Cancelled.
- Role-based access control (Patient, Doctor, Manager)
- JWT authentication & authorization
- Doctor search with location-based filtering and distance calculation
- Appointment booking, confirmation, and cancellation system
- Doctor availability slot management
- User profile management
- IP Geolocation fallback for location detection
- Manager analytics & system reports
| Role | Description |
|---|---|
| Patient | Searches for doctors, books and manages appointments |
| Doctor | Manages availability slots, confirms or declines appointments |
| Manager | Accesses system-wide reports and analytics |
- .NET 10 SDK
- Microsoft SQL Server
- SQL Server Management Studio (SSMS)
- Docker (for RabbitMQ)
- Clone the repository:
git clone https://github.com/nikosdsk/BackEnd_BlueDot.git- Navigate to the project folder and restore dependencies:
cd BackEnd_BlueDot
dotnet restore- Apply database migrations (from Package Manager Console in Visual Studio):
Update-Database
- Run the project:
dotnet runThe API will be available at http://localhost:5051
On first run, the database is automatically seeded with roles, 400 doctors across 5 Greek cities, and test users.
The API is documented with OpenAPI and accessible through the built-in Swagger UI.
- Run the API locally
- Open your browser and navigate to:
http://localhost:5051/openapi/v1.json```
### Using the Swagger UI you can:
- Explore the full list of available endpoints
- Execute test requests and examine the API responses
- Investigate the request models and response schemas
---
## Test Accounts
| Role | Email | Password |
|---|---|---|
| Doctor | doctor1@test.com | Doctor@123 |
| Manager | admin@test.com | Admin@123 |
---
## API Endpoints
### Auth
| Method | Endpoint | Description | Access |
|---|---|---|---|
| POST | `/api/auth/register` | Register a new user | Public |
| POST | `/api/auth/login` | Login and receive JWT token | Public |
### Profile
| Method | Endpoint | Description | Access |
|---|---|---|---|
| GET | `/api/profile/me` | Get current user profile | Authenticated |
| PATCH | `/api/profile/me` | Update current user profile | Authenticated |
### Doctor Search
| Method | Endpoint | Description | Access |
|---|---|---|---|
| GET | `/api/doctorssearch/search` | Search doctors by specialty and location | Public |
### Patient Portal
| Method | Endpoint | Description | Access |
|---|---|---|---|
| GET | `/api/patientportal/appointments` | Get patient's appointment history | Patient |
| POST | `/api/patientportal/appointments/request` | Request an appointment | Patient |
| PATCH | `/api/patientportal/appointments/{id}/cancel` | Cancel an appointment | Patient |
| GET | `/api/patientportal/doctors/{doctorId}/availability` | Get doctor's available slots | Patient |
| POST | `/api/patientportal/messages/send` | Send a message | Patient |
### Doctor Portal
| Method | Endpoint | Description | Access |
|---|---|---|---|
| POST | `/api/doctorportal/availability` | Set availability slots | Doctor |
| GET | `/api/doctorportal/availability` | Get own availability slots | Doctor |
| DELETE | `/api/doctorportal/availability/{id}` | Delete an availability slot | Doctor |
| GET | `/api/doctorportal/appointments/pending` | Get pending appointments | Doctor |
| GET | `/api/doctorportal/appointments/confirmed` | Get confirmed appointments | Doctor |
| PUT | `/api/doctorportal/appointments/{id}/acknowledge` | Accept or decline an appointment | Doctor |
### Manager Portal
| Method | Endpoint | Description | Access |
|---|---|---|---|
| GET | `/api/managerportal/reports/summary` | Get system summary report | Manager |
| GET | `/api/managerportal/analytics/usage` | Get usage analytics | Manager |
### Admin
| Method | Endpoint | Description | Access |
|---|---|---|---|
| GET | `/api/admin/all-users` | Get all users | Manager |
---
## Project Structure
BackEnd_BlueDot/ ├── Controllers/ # API Endpoints ├── Models/ # Database entities ├── DTOs/ # Data Transfer Objects ├── Data/ # DbContext & Database Seeder ├── Services/ # Location Service └── Program.cs # App configuration
---
*ReGen Academy — 2026*