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