Skip to content

eron1703/ats-microservices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ATS Microservices Platform

Enterprise-grade Applicant Tracking System built with microservices architecture, deployed on Kubernetes (K3s).

πŸ—οΈ Architecture

Backend Services (Python/FastAPI)

  • candidate-service: Candidate profile management
  • job-service: Job posting management
  • application-service: Application workflow management
  • email-service: Email integration and automation
  • parser-service: Resume parsing and extraction
  • matching-service: AI-powered candidate-job matching
  • workflow-service: Workflow automation and orchestration

Frontend Applications (React/Next.js)

  • admin-ui: Admin dashboard for recruiters
  • public-portal: Public job board and candidate portal

Database

  • PostgreSQL: Primary data store
  • Schema: ats
  • Connection: Shared PostgreSQL instance in K8s cluster

πŸš€ Deployment

Server Details

  • IP: 91.98.159.56
  • Platform: K3s (Lightweight Kubernetes)
  • Namespaces:
    • ats-backend: Backend microservices
    • ats-frontend: Frontend applications

Exposed Ports

Service Type Port URL
admin-ui NodePort 30082 http://91.98.159.56:30082
public-portal NodePort 30081 http://91.98.159.56:30081
All backend services ClusterIP 80 Internal only

Database Connection

Host: postgres.databases.svc.cluster.local:5432
Database: flowmaster
Schema: ats
Username: flowmaster
Password: [configured in K8s secrets]

πŸ› οΈ Development

Prerequisites

  • Docker & Docker Buildx
  • Python 3.11+
  • Node.js 18+
  • K3s cluster access

Build Services

# Build all services for linux/amd64
./rebuild-and-deploy.sh

Deploy to K3s

# Apply all configurations
kubectl apply -f k8s/00-namespaces.yaml
kubectl apply -f k8s/

Local Development

# Backend services
cd services/<service-name>
pip install -r requirements.txt
uvicorn main:app --reload --port 8080

# Frontend applications
cd frontends/<app-name>
npm install
npm run dev

πŸ“Š Current Status

Backend Services

  • βœ… application-service: Running
  • ⚠️ candidate-service: Partial (1 pod CrashLoopBackOff - missing email-validator)
  • ⚠️ email-service: Partial (1 pod CrashLoopBackOff - missing email-validator)
  • βœ… job-service: Running
  • βœ… matching-service: Running
  • βœ… parser-service: Running
  • βœ… workflow-service: Running

Frontend Services

  • βœ… admin-ui: Running (24h+ uptime)
  • βœ… public-portal: Running (30h+ uptime)

Known Issues

  • Missing email-validator dependency in candidate-service and email-service
  • Some pods in CrashLoopBackOff state

πŸ“ Project Structure

.
β”œβ”€β”€ services/              # Backend microservices
β”‚   β”œβ”€β”€ candidate-service/
β”‚   β”œβ”€β”€ job-service/
β”‚   β”œβ”€β”€ application-service/
β”‚   β”œβ”€β”€ email-service/
β”‚   β”œβ”€β”€ parser-service/
β”‚   β”œβ”€β”€ matching-service/
β”‚   └── workflow-service/
β”œβ”€β”€ frontends/            # Frontend applications
β”‚   β”œβ”€β”€ admin-ui/
β”‚   └── public-portal/
β”œβ”€β”€ k8s/                  # Kubernetes manifests
β”‚   β”œβ”€β”€ 00-namespaces.yaml
β”‚   β”œβ”€β”€ *-service.yaml
β”‚   β”œβ”€β”€ admin-ui.yaml
β”‚   └── public-portal.yaml
β”œβ”€β”€ migrations/           # Database migrations
β”‚   └── 001_initial_schema.sql
β”œβ”€β”€ scripts/              # Utility scripts
β”œβ”€β”€ tests/                # Test suites
β”œβ”€β”€ rebuild-and-deploy.sh # Build and deployment script
└── deploy-frontends.sh   # Frontend deployment script

πŸ—„οΈ Database Schema

Core Tables

  • ats.candidates: Candidate profiles
  • ats.resumes: Resume files and parsed data
  • ats.jobs: Job postings
  • ats.applications: Application submissions
  • ats.reviews: Application reviews
  • ats.email_log: Email communications
  • ats.match_scores: AI matching scores

Key Features

  • Automatic timestamp updates via triggers
  • GIN indexes for skills array searching
  • Foreign key constraints with cascade deletes
  • JSONB fields for flexible metadata

πŸ” Security

  • All services use ClusterIP (internal only)
  • Only frontend applications exposed via NodePort
  • Database credentials managed via K8s secrets
  • CORS configured per service

πŸ“ API Documentation

Each service provides:

  • /health: Health check endpoint
  • /ready: Readiness probe endpoint
  • /docs: Interactive API documentation (FastAPI)

🀝 Contributing

  1. Create feature branch
  2. Make changes
  3. Test locally
  4. Build and push images
  5. Deploy to K3s
  6. Verify deployment

πŸ“„ License

Proprietary - All Rights Reserved

About

Enterprise Applicant Tracking System - Microservices architecture on Kubernetes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors