Skip to content

This project tries to serve as playground for different technologies and concept by building an end-to-end ecosystem. The initial idea is to cover:

License

Notifications You must be signed in to change notification settings

jaruizes/casarrubios-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Status: ActiveVersionLicense

This repository serves as a personal portfolio, showcasing various topics and concepts about architecture, software development, and artificial intelligence through a practical use case.

For this reason, the solutions shown in this repository may be more complex than they should be in a production environment, but as mentioned, the goal of this repository is to use it as a didactical and playground tool.

⚠️ This repository is constantly evolving, so solutions shown here may not be complete or might contain some errors.


Current Status

This project is actively being developed as a portfolio and learning platform. The current version (MVP) includes:

  • ✅ Fully functional Candidates and Recruitment portals developed using Angular
  • ✅ AI-powered scoring (embeddings, cosine distance, LLM for explanation) and analysis of resumés (LLM)
  • ✅ Business services developed in multiple technologies like Spring, Quarkus or Python
  • ✅ EDA and associated technologies like Kafka or Kafka Streams
  • ✅ Change Data Capture (CDC) using Debezium for data synchronization between contexts and managing transactions and multiple tables
  • ✅ Outbox pattern implementation
  • ✅ OpenAPI
  • ✅ Traceability using OpenTelemetry and Jaeger
  • ✅ Testcontainers fot testing
  • ✅ Docker Compose deployment for local execution
  • ✅ CI/CD pipeline with GitHub Actions

Short-term Goals

  • 🔄 Kubernetes deployment (Helm), Infrastructure as Code (IaC) for AWS and GitOps
  • 🔄 Schema Registry, Avro, AsyncAPI, Event Catalog / Apicurio
  • 🔄 API Gateway (Kong for instance) in docker-compose runtime
  • 🔄 Use case for MCP (Model Context Protocol) and enhance the AI analysis capabilities with more detailed insights
  • 🔄 Internal Development Portal (Backstage)

Mid-term Goals

  • 📋 Authentication and authorization (Keycloak)
  • 📋 Metrics and logs management
  • 📋 Develop a candidate recommendation system
  • 📋 Add dashboard for recruitment analytics and KPIs
  • 📋 Implement configurable scoring algorithms

Note: This roadmap is tentative and subject to change as the project evolves and new learning opportunities are identified.


Project Structure

The structure of the project is the following:

  • 📖 ​doc/ → Documentation
  • 🚀 platform/
    • local/ → folders and files associated with docker-compose runtime environment
    • k8s/ → folders and files associated with Kubernetes runtime environment (in progress)
  • ⚙️ ​project/
    • 🧑‍🎓 candidates/ → all the components (frontend, backend, cdc) associated to candidates context
      • frontend → includes the application and its backend for frontend
      • backend → business services
      • cdc → connectors for change data capture
    • 🧑‍💼 recruitment/ → all the components (frontend, backend, cdc) associated to recruitment context
      • frontend → includes the application and its backend for frontend
      • backend → business services
      • cdc → connectors for change data capture

The "Business Case"

For this project, I've selected a recruitment process as the business case. The scenario involves a company that publishes job positions on its portal where interested candidates can apply and submit their resumes:

Recruitment Process Use Case

Having participated in many recruitment processes from the recruiter's perspective, I understand the challenges of objectively evaluating a large number of resumes without bias. This process is typically time-consuming and labor-intensive.

The innovative solution implemented in this project uses an AI-powered scoring algorithm to calculate the matching percentage between candidates and the positions they apply for.

AI-Enhanced Recruitment Process

This approach helps streamline the recruitment process by automatically identifying the most suitable candidates based on their qualifications and the job requirements.


Requirements

In this document you can find a detailed requirements list for this project


Functional Overview: candidates and recruitment applications

The project includes two fully functional applications that work together to create a complete recruitment ecosystem:


Candidates App

This application allows candidates to browse available positions and submit their applications with resumes.

Candidates Application Map


Recruitment App

This application enables recruiters to manage job positions, review applications, and see AI-generated scoring and analysis.

Recruitment Application Map

For detailed information about the functionality of both applications, please refer to the functional documentation.


How to Execute It

Prerequisites

Before you begin, ensure you have the following installed:

  • Docker (latest stable version)
  • Docker Compose (latest stable version)
  • An OpenAI API Key (required for the AI-powered scoring functionality)

Note: You don't need to build any services or images manually. All necessary images are pre-built and published as GitHub Public Packages.

Setup and Execution

  1. Set up your OpenAI API Key

    Open a terminal and set the environment variable:

    export OPENAI_API_KEY=<your OpenAI API key>
  2. Start the application

    In the same terminal, navigate to the local platform directory and start the services:

    cd platform/local
    docker-compose up -d 

    Note: The initial startup may take several minutes as all services and data are being initialized. Please be patient.

  3. Access the applications

    Once all services are up and running, you can access the following applications:

    Application URL Description
    Recruitment App http://localhost:9070/private/home Application for recruiters to manage positions and review applications
    Candidates App http://localhost:8081/home Application for candidates to browse positions and submit applications
    Kafka UI http://localhost:8001/ Interface to monitor Kafka topics and messages
    Jaeger http://localhost:16686/search Distributed tracing system to monitor and troubleshoot transactions
    Minio http://localhost:9001/login Object storage service (credentials: minioadmin/minioadmin)

Demo Guide and Technical details

In this document you can find a detailed demo guide including technical details


Architecture

In this document you can find all the architecture details about this project


CI/CD

The project implements a Continuous Integration and Continuous Deployment (CI/CD) pipeline based on GitHub Actions. The pipeline automates the process of building, creating Docker images, and publishing them to GitHub Packages:

CI/CD Pipeline Diagram


This automation ensures consistent builds and deployments, making it easier to maintain and update the project components.

Note: Currently, the MVP is deployed using Docker Compose. Future releases will incorporate Infrastructure as Code (IaC) and deployment to cloud platforms such as AWS and Azure.



Additional Topics Covered

This section explains various concepts, patterns, and technologies implemented in this project. Each topic includes a link to detailed documentation:

Testing & Quality Assurance

  • Testcontainers - Integration testing with containerized dependencies
  • Mutation Testing - Advanced testing technique to evaluate test suite effectiveness

API Development

Frameworks & Libraries

Data Integration

Google Colab & IA


About

This project tries to serve as playground for different technologies and concept by building an end-to-end ecosystem. The initial idea is to cover:

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages