Skip to content

ASP.NET Core 8 Minimal API and Razor Pages app for booking doctor appointments 🧑‍⚕️ Identity, Clean Architecture, EF Core, SQL Server, Repository and Specification Patterns, MediatR, FluentValidation

Notifications You must be signed in to change notification settings

alexandra-valkova/DoctorAppointment

Repository files navigation

Doctor Appointment 🩺

Online registry for patients who want to make an appointment with their doctor 🧑‍⚕️

This is an ongoing ASP.NET Core 8 project based on the old Patient's Registry project :octocat:

It implements the following ⬇️

  • Clean Architecture;
  • ASP.NET Identity Authentication and Role-Based Authorization;
  • code-first approach with SQL Server, EF Core, Generic Repository and Specification Design Patterns;
  • Razor Pages Web App;
  • Minimal Web API with Bearer Token.

Structure

Core

  • Domain - Entities (including ASP.NET Identity), Interfaces, Result and Specification Design Pattern;
  • Application - services and use cases with MediatR and FluentValidation, organized in a Vertical Slice Architecture style (DTOs, Validators, Commands and Queries grouped by Features);

Infrastructure

  • Persistence - database access, in this case SQL Server with Entity Framework Core and Generic Repository Design Pattern;

Presentation

  • RazorPages - a Razor Pages app that consumes the services. It applies the full business functionality;
  • API - an ASP.NET Core Web API (Minimal API with Swagger UI) to access appointments information from the database, with Bearer Token authorization;

Functionality

The web application defines 3 user roles and supports adding and editing new roles by the admin:

  • Admin - can access and edit all data (users, roles and appointments);
  • Patient - can request, reschedule and delete apointments;
  • Doctor - can approve or decline appointments;

Appointments have one of the following status: Pending, Approved or Declined.

The API currently covers only the appointments data (GET, POST, PUT, PATCH, DELETE).

Screenshots

View screenshots 📸 of the web app
  • Admin ⚙️ Appointments Page Admin Appointments

  • Patient 🥼 Appointments Page Patient Appointments

  • Doctor 🩺 Appointments Page Doctor Appointments