Skip to content

LIDR-academy/AI4Devs-LTI-extended

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

39 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LTI (Leadership. Technology. Impact) - ATS System

πŸ“‹ Overview

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.

🎯 Purpose

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

πŸ—οΈ Architecture

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)            β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Technologies

Backend

  • 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

Frontend

  • 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

DevOps & Testing

  • Docker - Containerization for PostgreSQL database
  • Cypress - End-to-end testing framework
  • ESLint & Prettier - Code linting and formatting

πŸ“ Folder Structure

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

πŸš€ Setup & Testing

For detailed setup instructions, environment configuration, and testing guidelines, see the Development Guide.

πŸ“Š Database Schema

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.

πŸ”— API Documentation

The REST API follows OpenAPI 3.0 specification. Key endpoints include:

  • GET /candidates - List candidates with filtering and pagination
  • POST /candidates - Create new candidate
  • GET /candidates/{id} - Get candidate details
  • GET /positions - List available positions
  • POST /positions - Create new position
  • PUT /candidates/{id} - Update candidate interview stage

Full API documentation is available in ai-specs/specs/api-spec.yml.

🀝 Contributing

  1. Follow the established coding patterns and architecture
  2. Write tests for new features
  3. Update specs documentation for any changes (API, Data model...)
  4. Use TypeScript for type safety
  5. Follow the domain-driven design principles

πŸ“„ License

This project is licensed under the ISC License.

πŸ“ž Support

For questions or support, please contact the LTI Development Team.

About

Repository with several experiments from live sessions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors