The LTI ATS (Applicant Tracking System) is a modern, full-stack recruitment management platform designed to streamline the entire hiring process. This system enables organizations to efficiently manage candidates, track applications, organize interviews, and make data-driven hiring decisions.
The LTI ATS addresses critical challenges in modern recruitment by providing:
- Centralized Candidate Management: Comprehensive candidate profiles with education, work experience, and document storage
- Structured Interview Processes: Customizable interview flows with multiple stages and evaluation criteria
- Application Tracking: End-to-end visibility of candidate progress through hiring pipelines
- Collaborative Decision Making: Multi-stakeholder interview coordination and evaluation tools
- Data-Driven Insights: Analytics and reporting for recruitment process optimization
The system follows Domain-Driven Design (DDD) principles with a clean, layered architecture:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
β βββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
β β React Frontend β β Express.js Controllers ββ
β β (TypeScript) β β (REST API) ββ
β βββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Application Layer β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Services & Use Cases ββ
β β (candidateService, positionService, etc.) ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Domain Layer β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Domain Models & Business Logic ββ
β β (Candidate, Position, Application, Interview) ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Infrastructure Layer β
β βββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
β β PostgreSQL β β Prisma ORM ββ
β β (Database) β β (Data Access) ββ
β βββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Node.js with TypeScript - Server-side runtime and type safety
- Express.js - Web framework for REST API
- Prisma ORM - Type-safe database client and migrations
- PostgreSQL - Primary database for data persistence
- Jest - Unit and integration testing framework
- Serverless Framework - Cloud deployment capabilities
- React 18 with TypeScript - Modern UI framework with type safety
- React Bootstrap - UI component library
- React Router DOM - Client-side routing
- React Beautiful DnD - Drag and drop functionality for Kanban boards
- React DatePicker - Date selection components
- Docker - Containerization for PostgreSQL database
- Cypress - End-to-end testing framework
- ESLint & Prettier - Code linting and formatting
AI4Devs-LTI/
βββ π backend/ # Backend application
β βββ π src/
β β βββ π presentation/ # Controllers & Routes
β β β βββ π controllers/ # REST API controllers
β β β βββ π __tests__/ # Controller tests
β β βββ π application/ # Application services
β β β βββ π services/ # Business logic services
β β β βββ validator.ts # Input validation
β β βββ π domain/ # Domain layer
β β β βββ π models/ # Domain entities
β β β βββ π repositories/ # Repository interfaces
β β βββ π infrastructure/ # Infrastructure layer
β β βββ π routes/ # API route definitions
β βββ π prisma/ # Database schema & migrations
β β βββ schema.prisma # Database schema definition
β β βββ π migrations/ # Database migration files
β β βββ seed.ts # Database seeding script
β βββ package.json # Backend dependencies
β βββ tsconfig.json # TypeScript configuration
β βββ jest.config.js # Jest testing configuration
β
βββ π frontend/ # React frontend application
β βββ π src/
β β βββ π components/ # React components
β β βββ π services/ # API service layers
β β βββ π pages/ # Page components
β β βββ App.js # Main application component
β βββ π cypress/ # E2E testing
β β βββ π e2e/ # Cypress test specs
β βββ package.json # Frontend dependencies
β βββ tsconfig.json # TypeScript configuration
β
βββ π documentation/ # Project documentation
β βββ DataModel.md # Data model and entity documentation
β βββ api-spec.yml # OpenAPI specification
β
βββ π memory-bank/ # Project context & documentation
β βββ projectbrief.md # Project overview
β βββ productContext.md # Business context
β βββ systemPatterns.md # Architecture patterns
β
βββ docker-compose.yml # PostgreSQL containerization
βββ package.json # Root project configuration
βββ README.md # This file
For detailed setup instructions, environment configuration, and testing guidelines, see the Development Guide.
The system uses the following main entities:
- Candidates: Personal information, education, work experience
- Companies: Organizations posting positions
- Positions: Job openings with requirements and descriptions
- Applications: Candidate applications to specific positions
- Interview Flows: Configurable interview process stages
- Interviews: Individual interview sessions and results
For detailed schema information, entity relationships, and the complete data model documentation, see ai-specs/specs/data-model.md.
The REST API follows OpenAPI 3.0 specification. Key endpoints include:
GET /candidates- List candidates with filtering and paginationPOST /candidates- Create new candidateGET /candidates/{id}- Get candidate detailsGET /positions- List available positionsPOST /positions- Create new positionPUT /candidates/{id}- Update candidate interview stage
Full API documentation is available in ai-specs/specs/api-spec.yml.
- Follow the established coding patterns and architecture
- Write tests for new features
- Update specs documentation for any changes (API, Data model...)
- Use TypeScript for type safety
- Follow the domain-driven design principles
This project is licensed under the ISC License.
For questions or support, please contact the LTI Development Team.