Skip to content

shadzhiyski/DentalScheduler

Repository files navigation

Dental System

build status badge CodeQL Lint Code Base

Description

This repository contains demo source code of my Dental System project following Clean Architecture and BDD (Behavior Driven Development).

Dental System is a system providing appointment scheduling for dental services. Clients can easily request appointment to their desired Dental Team, track history, etc. It supports various Dental Teams and Treatment services.

Feature Highlights

Identity

Supports main identity features - user registration (only for clients of the dental system), login and profile management.

Scheduling

  • Request for treatment session - only for clients of the dental system.
  • Approval/Reject/Rearrangement of treatment session - only for dental workers of the dental system.
  • History tracking.

Technologies

Architecture

Components Relationships

Main components of the system are PostgreSQL database, ASP.NET Web API and Blazor WebAssembly(Wasm) App. When published, Blazor WebAssembly project produces static files. NGINX is configured to serve these files. Below is a diagram of components relationships:

Components Relationships

Layers

This architecture follows a use case driven approach. See more about screaming architecture.

Dental Scheduler Architecture

Domain

This layer is a place for all entities and specifications. They are basic building blocks for the system.

Application

Use Cases

This layer contains application-specific business rules. Therein lies the code that specifies what a project actually does. It's a home for all Use Cases (also known as Interactors).

Boundaries

The second kind of building blocks which will always reside in this layer is an Interface (also known as Port/Gateway). These are abstractions over anything that sits in the layers between the Use Cases and the outer layers Infrastructure and Presentation (Web API and Web UI) - Use Cases Ports to Presentation and Infrastructure Gateways for Use Cases.

Infrastructure

Contains all the code needed for the project to use goodies from External World.

Persistence of the database is sitting in this layer. In this project is used PostgreSQL for the primary data store.This layer also contains the Authentication and Authorization management of users.

Presentation

Presents data to user and handle user interactions.

Web API

The Web API of the system. It uses full business logic from use cases.

Web UI

The Web UI of the system. It communicates with the Web API to fetch/update data and uses only simple validation logic from use cases.

Launch

Prerequisites

To launch the project you need to have docker and docker-compose installed on your machine. You can get docker from here and docker-compose from here.

Instructions

Clone the solution locally. Go to root directory and run the following command:

docker-compose up -d

docker-compose up -d builds the images and starts the containers of the database, Web API and Web UI. It may take a few minutes.

After the containers are started, the Web API is accessible on http://localhost:5500 and the Web UI is accessible on http://localhost.

To stop the running containers execute docker-compose down.

docker-compose down

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published