DocTime

DocTime, a SaaS platform designed to bridge the gap between doctors and patients. This platform streamlines various aspects of healthcare management, including doctor discovery, patient record management, appointment scheduling, and automated appointment reminders.

DocTime

DocTime

About the project

DocTime, a SaaS platform designed to bridge the gap between doctors and patients. This platform streamlines various aspects of healthcare management, including doctor discovery, patient record management, appointment scheduling, and automated appointment reminders.

The project is still under construction. Only the API is available now

Development

This project is currently under construction, but the API is available (Public GitHub Repository).

Architecture

I created this project as separate API/Frontend. The API is monolithic Service Driven architecture. With End-to-End testing and CI pipeline.

Services

The application needs basic common services like Notification, Persistence, Documents Creation, Mailing, and Authentication System.

Persistence:

For persistence, and because we work with related models, I choose a Relational Database, PostgresSQL as a result.

Document Creation:

To generate documents, I used handlebars templates and puppeteer to generate PDFs.

Notification

In the process of authetication, there is MFA and validation that uses phone and email validation. AWS SNS and AWS SES was my go-to for these particular use cases. As well as Mailtrap for mail testing.

Authentication

JWT authentication system with build-in MFA system due to sensitive data processing.

End-to-End Testing

For testing, I created end-to-end tests to process the mock the APIs endpoints. Using Jest and nodemailer mocker to test the full process against common use cases, and full test suit for the MFA and authentication process.

CI pipeline

For commits validation, I used Husky and lint-staged. The CI process uses GitHub Actions, that creates test environment with PostgreSQL and run full tests suites, and deploy the coverage result using Cloudflare Pages.

API Stack

Runtime

  • NodeJS

  • TypeScript

  • Nodemon

API

  • ExpressJS

  • jsonwebtoken

  • ZOD

Database

  • PrismaJS

  • PostgreSQL

Testing

  • Jest E2E

  • Supertest

  • Nodemailer mock

  • Cheerio

Communication Services

  • Nodemailer

  • AWS SES/SNS

Code Linting

  • ESLinter

  • Prettier

CI/CD Stack

  • Husky

  • Lint Staged

  • GitHub CI Actions

Logging

  • Winston Logger