Skip to content

Healthcare Appointment Scheduling System using Microservices Architecture, Asynchronous Communications, Caching, and DevOps

Notifications You must be signed in to change notification settings

aliakkas006/healthcare-appointment-system

Repository files navigation

TypeScript Node

Healthcare Appointment Scheduling System

About

Building Microservices Architecture using Docker, implementing CI/CD pipelines using GitHub Actions, incorporating asynchronous communication using RabbitMQ and caching with Redis. Additionally, implementing rate limiting, creating a custom API gateway or reverse proxy, and documenting system architecture.

Overview

  • The Healthcare Appointment Scheduling System employs a microservices architecture with Docker containers for modularization and scalability.
  • CI/CD pipelines ensure automated and reliable deployment of updates and features.
  • RabbitMQ enables asynchronous communication between services, enhancing system resilience and responsiveness.
  • Redis caching optimizes performance by storing patient data and appointment schedules, reducing database load and latency.
  • Rate limiting mechanisms manage system load and prevent overload, ensuring stability and responsiveness.
  • A custom API gateway facilitates secure and efficient communication between services, providing features like authentication and request routing.

Technologies Used

  • Node.js - Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
  • Express.js - Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.
  • Typescript - TypeScript extends JavaScript by adding types to the language.
  • Zod - Zod is a TypeScript-first schema declaration and validation library.
  • PostgreSQL - PostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance.
  • Prisma - Open source Node.js and TypeScript ORM with a readable data model, automated migrations, type-safety, and auto-completion.
  • Docker - Docker is a platform designed to help developers build, share, and run container applications.
  • Redis - Redis is a source-available, in-memory storage, used as a distributed, in-memory key–value database, cache and message broker, with optional durability.
  • RabbitMQ - RabbitMQ is another widely used open source message broker, employed by several companies worldwide.
  • GitHub Actions - GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows to automate build, test, and deployment pipeline.
  • Postman - Postman is an application that allows the testing of web APIs.

File Structure

Healthcare-Appointment-Scheduling-System/
├── .github
        └── workflows
                └── cd.yaml
├── api-gateway
└── services/
        ├── auth/
              ├── prisma
              ├── src/
                    ├── controllers
                    ├── lib
                    ├── routes
                    ├── app.ts
                    ├── index.ts
                    ├── config.ts
              ├── tests
              ├── package.json
              ├── Dockerfile
        ├── user
              ├── prisma
              ├── src/
                    ├── controllers
                    ├── lib
                    ├── routes
                    ├── app.ts
                    ├── index.ts
                    ├── config.ts
              ├── tests
              ├── package.json
              ├── Dockerfile
        ├── email
              ├── prisma
              ├── src/
                    ├── controllers
                    ├── lib
                    ├── routes
                    ├── app.ts
                    ├── index.ts
                    ├── config.ts
              ├── tests
              ├── package.json
              ├── Dockerfile
        ├── appointment
              ├── prisma
              ├── src/
                    ├── controllers
                    ├── lib
                    ├── routes
                    ├── app.ts
                    ├── index.ts
                    ├── config.ts
                    ├── queue.ts
                    ├── redis.ts
              ├── tests
              ├── package.json
              ├── Dockerfile
        ├── EHR
              ├── prisma
              ├── src/
                    ├── controllers
                    ├── lib
                    ├── routes
                    ├── app.ts
                    ├── index.ts
                    ├── config.ts
                    ├── queue.ts
                    ├── redis.ts
              ├── tests
              ├── package.json
              ├── Dockerfile
        ├── notification
               ├── prisma
              ├── src/
                    ├── controllers
                    ├── lib
                    ├── routes
                    ├── app.ts
                    ├── index.ts
                    ├── config.ts
              ├── tests
              ├── package.json
              ├── Dockerfile
├── docker-compose.yaml
├── README.md

Setup

follow .env.example file for setup environment variables

Run the Microservices and their Dependencies

docker-compose up

Run the Kong API Gateway and Keycloak

docker-compose -f kong-docker-compose.yml up

Run the Tests

yarn run test .\tests\**\**\*

Automatic CI/CD

When push the code in the GitHub automatic run the actions

Postman API Testing

https://api.postman.com/collections/22653708-df253a8d-6b26-4e83-9673-793d1d6c04d5?access_key=PMAT-01HWT700T6H22BASWVF2E3HK9R

About

Healthcare Appointment Scheduling System using Microservices Architecture, Asynchronous Communications, Caching, and DevOps

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published