Skip to content

kiranannadatha8/resume-optimizer

Repository files navigation

AI-Powered Job Application Assistant

A production-ready platform that helps candidates tailor resumes, track job applications, and auto-fill job portal forms using AI insights.

Solution Overview

  • Backend (Node.js + Express + GraphQL) – Resume parsing, job analysis, AI optimization through OpenAI, JWT auth, MongoDB persistence, Redis caching, S3 file storage.
  • Frontend (React + TypeScript + Vite) – Secure dashboard for resume management, job tracker, AI suggestions, and application pipeline views.
  • Chrome Extension (Manifest v3 + React) – Detects supported job portals, auto-fills profile data, and fetches tailored AI suggestions from the backend.
  • Infrastructure – Dockerized services, docker-compose for local development, Jenkins CI/CD pipeline, Kubernetes manifests for AWS EKS (via Rancher), TLS termination through ACM, centralized logging/monitoring hooks.

Monorepo Structure

apps/
  backend/           Express API + GraphQL server
  frontend/          React dashboard (Vite)
  extension/         Chrome extension (MV3)
packages/
  shared-types/      Shared TypeScript domain models
  shared-utils/      Cross-cutting utilities
infra/
  docker/            Service-specific Dockerfiles
  k8s/               Kubernetes manifests
  nginx/             Nginx reverse proxy config
env/                 Environment templates
scripts/             Automation hooks (future)

Prerequisites

  • Node.js 20+
  • npm 10+
  • Docker & Docker Compose (for containerized local dev)
  • OpenAI API key, AWS credentials (S3), MongoDB and Redis endpoints for production

Quick Start (Docker Compose)

cp env/.env.example .env.local # adjust secrets as needed
docker-compose up --build

Services:

The compose stack provisions the S3 bucket automatically and wires environment variables for the backend container.

Manual Development Workflow

npm install --workspaces --include-workspace-root

# Shared libraries
npm run build --workspace packages/shared-types
npm run build --workspace packages/shared-utils

# Backend API
env $(cat env/.env.example | xargs) npm run dev --workspace apps/backend

# Frontend dashboard
npm run dev --workspace apps/frontend
# Vite dev server on http://localhost:5173 (proxy → backend http://localhost:4000)

# Chrome extension
npm run dev --workspace apps/extension
# load apps/extension/dist via chrome://extensions (Developer mode → Load unpacked)

Environment Variables

All backend variables are defined in env/.env.example, including JWT secrets, OpenAI model, Redis/Mongo URIs, AWS S3 configuration, and CORS origins.

API Contracts

  • REST – Documented via apps/backend/src/docs/openapi.yaml (see API Reference below). Health endpoint available at /api/health.
  • GraphQL – Schema composed under apps/backend/src/graphql/schema.ts. Key entry points:
    • Query: me, resumes, jobs, applications
    • Mutation: register, login, uploadResume, createJob, optimizeResume, etc.

Generating Documentation

# REST (OpenAPI → HTML using redocly)
npx redoc-cli bundle apps/backend/src/docs/openapi.yaml -o docs/api.html

# GraphQL schema SDL
npx graphql-cli print-schema --endpoint http://localhost:4000/graphql

Testing

# Run all unit/integration tests
npm run test --workspaces

# Sample scoped runs
npm run test --workspace apps/backend
npm run test --workspace packages/shared-utils
  • Backend – Jest-powered unit tests for services (auth.service, resume.parser) and HTTP integration tests (/api/health).
  • Shared utilities – Vitest suite covering helper functions.
  • Additional integration/e2e scenarios (Mongo/Redis/OpenAI) can be executed with docker-compose profile specific test stacks.

Chrome Extension Features

  • Detects LinkedIn, Lever, Greenhouse, and Workday job pages and extracts title/company/description.
  • Provides floating panel to:
    • Autofill applicant info (name, email, phone, location, LinkedIn) using stored profile values.
    • Invoke POST /jobs + POST /ai/optimize to fetch ATS score, missing keywords, STAR bullet suggestions.
  • Popup UI stores API base URL, JWT, resume ID, and profile fields in Chrome sync storage.

CI/CD Pipeline

  • Jenkinsfile defines stages: checkout → install → lint → test → build → Docker build/push → kubectl deploy.
  • Docker images tagged per build and pushed to registry.example.com/resume-optimizer (replace with your registry + credentials IDs).
  • Pipeline publishes test results (apps/backend/coverage/junit.xml) and cleans workspace after each build.

Kubernetes Deployment (EKS via Rancher)

Manifests under infra/k8s/ include:

  • Namespace, ConfigMap, and Secret definitions for backend configuration/secrets.
  • Deployments/Services for backend (resume-backend), frontend (resume-frontend), Redis, and MongoDB (stateful set with PVC).
  • Ingress (ALB-compatible) with TLS via AWS ACM.

Apply stack:

kubectl apply -f infra/k8s/namespace.yaml
kubectl apply -f infra/k8s/backend-config.yaml
kubectl apply -f infra/k8s/backend-secret.yaml
kubectl apply -f infra/k8s/mongo-statefulset.yaml
kubectl apply -f infra/k8s/redis-deployment.yaml
kubectl apply -f infra/k8s/backend-deployment.yaml
kubectl apply -f infra/k8s/frontend-deployment.yaml
kubectl apply -f infra/k8s/ingress.yaml

Integrate Fluent Bit / CloudWatch (or ELK) and Prometheus/Grafana to capture logs/metrics from pods (hooks included as commentary in manifests).

Security Considerations

  • JWT access + refresh tokens with configurable lifetimes.
  • Passwords stored as bcrypt hashes, refresh tokens hashed before persistence.
  • S3 uploads enforce server-side AES-256 encryption and signed download URLs.
  • Environment secrets sourced from Kubernetes Secrets / Jenkins credentials.
  • CORS restricts origins to configured frontend + extension IDs.
  • Redis caches AI results for six hours to reduce OpenAI usage while avoiding stale data.

Roadmap Ideas

  • Background job orchestrator (BullMQ) for long-running parsing/AI tasks.
  • Integration with LinkedIn/Google OAuth (placeholders in AuthService).
  • Advanced ATS scoring using embeddings and semantic diffing.
  • Notification system (email/Slack) for follow-up reminders.
  • Observability stack (Grafana dashboards illustrated for ATS score trends, queue depth, API latency).

For contribution guidelines, open issues or submit PRs with linted/tested changes. Documentation updates and deployment automation scripts are welcome additions.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors