This is a full-stack proof-of-concept for an AI-assisted diagnostic platform, featuring a robust NestJS backend and a modern Angular frontend. This project was built to showcase advanced architectural patterns and modern web development practices in a real-world context.
The application provides a conversational interface to assist dental professionals in diagnosing conditions based on radiographic findings. A user can input a text-based report, and the system guides them through a dynamic, multi-step dialogue to arrive at a preliminary recommendation.
This repository is structured as a monorepo with two main packages:
/backend: A NestJS API that serves the conversation logic, complete with API documentation, health checks, and unit tests./frontend: An Angular single-page application that provides a polished and responsive user interface.
While a production-grade application of this nature could integrate a Large Language Model (LLM) like OpenAI's GPT series, this prototype deliberately implements a deterministic, rule-based engine using a decision-tree.json file.
This choice was made for several strategic reasons:
- Predictability & Control: In a medical context, a deterministic and predictable conversation flow is critical for ensuring consistency and reliability in diagnostic support.
- Demonstrates Core Logic: Building a rule-based engine requires explicitly modeling the diagnostic domain logic, showcasing the ability to translate complex requirements into a structured system.
- Focus on Architecture: This approach allows the project to focus on fundamental software architecture: building a scalable, well-tested, and maintainable system around a self-contained logic core.
- Full-Stack Application: Monorepo with a NestJS backend and Angular frontend.
- Interactive Conversational UI: A polished, chat-like interface built with Tailwind CSS.
- Decoupled Rule-Based Engine: Conversation logic is managed in an external JSON file, making it easy to update without code changes.
- API Documentation: Interactive API documentation powered by Swagger (OpenAPI).
- Health Checks: A
/healthendpoint using Terminus to monitor application status, memory, and disk usage. - Unit Tested: Both backend and frontend include unit tests using Jest and Jasmine.
- Professional Tooling: Includes full VS Code debug configurations and code formatting with Prettier.
| Component | Technology |
|---|---|
| Backend | NestJS, TypeScript, Terminus, Swagger, Jest |
| Frontend | Angular, TypeScript, Tailwind CSS, Jasmine |
- Node.js (v20.x or later)
- npm
- Angular CLI (
npm install -g @angular/cli)
You will need two separate terminal sessions to run both the backend and frontend concurrently.
1. Run the Backend:
# In your first terminal
cd backend
npm install
npm run start:devThe backend API will be running at http://localhost:3000.
2. Run the Frontend:
# In your second terminal
cd frontend
npm install
ng serveThe frontend application will be available at http://localhost:4200. Once both are running, open your browser to use the application.