Skip to content

nikosdsk/BackEnd_BlueDot

Repository files navigation

MyCareClick — Backend API

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.


Tech Stack

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

Core Entities

  • 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.

Features

  • 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

Roles

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

Getting Started

Prerequisites

Installation

  1. Clone the repository:
git clone https://github.com/nikosdsk/BackEnd_BlueDot.git
  1. Navigate to the project folder and restore dependencies:
cd BackEnd_BlueDot
dotnet restore
  1. Apply database migrations (from Package Manager Console in Visual Studio):
Update-Database
  1. Run the project:
dotnet run

The 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.


API Documentation

The API is documented with OpenAPI and accessible through the built-in Swagger UI.

Accessing the Documentation

  1. Run the API locally
  2. 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*

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages