suparthghimire / lf-practitioner-management-system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Leapfrog Assignment - Practitioner Management System

Fullstack Application Written Assignment

Demo


Techology Stack

The technology stack for the project is listed below

Server

  • Typescript
  • MySQL
  • Prisma
  • ExpressJS

Tests

Unit Tests are present in testing branch


API Reference

User

API Reference for User

Sign In

  Post /signin

Validates email and password of user and returns access and refresh tokens

Body Type Description
email string Required. User Email
password string Required. User Password

Signup

  GET /signup

Creates new user

Body Type Description
name string Required. Name of User
email string Required. Email of User
password string Required. Password of User
confirmPassword string Required. Confirm Password of User

Signout

  Delete /signout

Clears refresh token from database and browser cookie

Header Type Description
authorization string Required. Bearer Token of User (Access Token)
  Post /refresh

Generates new Access Token

Header Type Description
authorization string Required. Bearer Token of User (Refresh Token)

Practitioner

API Reference for Practitioner

Index

  Get /practitioner?page=1&limit=10

Gets all Practitioners with pagination

Header Type Description
authorization string Required. Access Token of User
query Type Description
limit number Optional. Limit for Data in One Page
page number Optional. Page Number

Show

  Get /practitioner/{practitioner_id}

Gets all Practitioners with pagination

Header Type Description
authorization string Required. Access Token of User
Parameters Type Description
practitioner_id number Required. Practitioner Id

Create

  Post /practitioner

Creates New Practitioner

Header Type Description
authorization string Required. Access Token of User
Body Type Description
fullname string Required. Name of Practitioner
email string Required. Email of Practitioner
contact string Required. Contact of Practitioner
dob DateTime Required. Date of Birth of Practitioner
address string Required. Address of Practitioner
image File Required. Display Picture of Practitioner
icuSpecialist boolean Optional. Yes if Practitioner is ICU Specialist
startTime DateTime Required. Start time for Practitioner
endTime DateTime Required. End time for Practitioner
WorkingDays Array Required. Array of Working Day of Practitioner (id and name)
Specializations Array Required. Array of Specialization of Practitioner (id and name)

Update

  Put /practitioner/{practitioner_id}

Updates Existing Practitioner

Header Type Description
authorization string Required. Access Token of User
Parameters Type Description
practitioner_id number Required. Practitioner Id
Body Type Description
fullname string Required. Name of Practitioner
email string Required. Email of Practitioner
contact string Required. Contact of Practitioner
dob DateTime Required. Date of Birth of Practitioner
address string Required. Address of Practitioner
image File Required. Display Picture of Practitioner
icuSpecialist boolean Optional. True or False for depending on Practitioner
startTime DateTime Required. Start time for Practitioner
endTime DateTime Required. End time for Practitioner
WorkingDays Array Required. Array of Working Day of Practitioner (id and name)
Specializations Array Required. Array of Specialization of Practitioner (id and name)

Delete

  Delete /patient/{practitioner_id}

Deletes Existing Practitioner

Header Type Description
authorization string Required. Access Token of User
Parameters Type Description
practitioner_id number Required. Practitioner Id

Local Development

  1. Clone the repository
  mkdir assignment-project
  cd assignment-project
  git clone https://github.com/suparthghimire/lf-practitioner-management-system.git

Project Setup

  1. Setup Environment Variables based on .env.example of server and client

  2. Setuyp Database

  3. Seed Data

  yarn prisma db seed

Docker

  docker compose up --build --detach

If ports aren't mapped correctly, change mapping in docker-compose.yml file

Default Server Port = 7000

Default Client Port = 7002


No Docker

Server

  cd server
  1. Install Dependencies
  yarn
  1. Setup Environment Variables based on .env.example

  2. Initialize Prisma

  yarn prisma init
  1. Run Migration
  yarn prisma migrate dev --name InitialMigration
  1. Generate Prisma Client (Optional)
  yarn prisma generate
  1. Seed Data
  yarn prisma db seed

Client

  cd client
  1. Install Dependencies
  yarn

Running Locally

  1. Start the Development server

Client

  cd client
  yarn dev

Server

  cd server
  yarn dev

Build

Client

  cd client
  1. Build the project
  yarn build
  1. Start
  yarn start

Server

  cd server
  1. Build the project
  yarn build
  1. Start
  yarn start

Tests

  1. Run Tests Without Logs
  yarn test
  1. Run Tests With Logs
  yarn test:log
  1. Run Tests with Coverage
  yarn test:coverage

Author

@suparthghimire

About


Languages

Language:TypeScript 98.8%Language:JavaScript 0.8%Language:CSS 0.2%Language:HTML 0.1%Language:Dockerfile 0.1%