Skip to content

Haris-Kayani/ai-resume-feedback

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Resume Fix

ATS Resume Scoring & Optimization Platform

A full-stack web application that helps job seekers optimize their resumes for Applicant Tracking Systems (ATS). Upload your resume, paste a job description, and get instant ATS compatibility scores with actionable recommendations.

License TypeScript React Node.js


✨ Features

  • πŸ“„ Resume Upload - Support for PDF and DOCX formats
  • πŸ“ Rich Text Job Description Editor - Built with Tiptap
  • 🎯 ATS Scoring - Get detailed compatibility scores (0-100)
  • πŸ” Keyword Analysis - Match your resume with job requirements
  • πŸ’‘ Smart Recommendations - Actionable suggestions to improve your score
  • πŸ“Š Side-by-Side Comparison - See resume and job description differences
  • πŸ“š History Tracking - Access all your past analyses
  • πŸ” Secure Authentication - JWT-based user authentication
  • πŸŒ™ Modern UI - Dark theme with smooth animations

πŸš€ Tech Stack

Frontend

  • React 18 - UI framework
  • TypeScript - Type safety
  • Vite - Lightning-fast build tool
  • React Router v7 - Client-side routing
  • Zustand - State management
  • TailwindCSS - Utility-first styling
  • Tiptap - Rich text editor
  • Lucide React - Icon library

Backend

  • Node.js - Runtime environment
  • Express - Web framework
  • MongoDB + Mongoose - Database
  • JWT - Authentication tokens
  • Multer - File upload handling
  • pdf-parse - PDF text extraction
  • mammoth - DOCX text extraction
  • Zod - Schema validation

DevOps & Testing

  • Docker & Docker Compose - Containerization
  • Playwright - E2E testing
  • Vitest - Unit testing
  • ESLint - Code linting
  • Vercel - Deployment ready

πŸ“‹ Prerequisites

  • Node.js 22 or higher
  • MongoDB 7 or higher (or use Docker Compose)
  • npm or pnpm

πŸ› οΈ Installation

Option 1: Local Development

  1. Clone the repository

    git clone <repository-url>
    cd resume-fix
  2. Install dependencies

    npm install
  3. Set up environment variables

    Create a .env file in the root directory:

    # Server Configuration
    PORT=3001
    NODE_ENV=development
    
    # Database
    MONGODB_URI=mongodb://localhost:27017/resume_ats
    
    # Authentication
    JWT_SECRET=your_super_secret_key_change_this_in_production
    
    # CORS
    CLIENT_ORIGIN=http://localhost:5173,http://localhost:3001
    
    # File Upload
    MAX_FILE_SIZE_MB=5
    UPLOAD_DIR=./uploads
  4. Start MongoDB

    # Using Docker
    docker run -d -p 27017:27017 --name mongodb mongo:7
    
    # Or use your local MongoDB installation
  5. Run the development servers

    # Start both frontend and backend concurrently
    npm run dev
    
    # Or run them separately:
    npm run client:dev  # Frontend on http://localhost:5173
    npm run server:dev  # Backend on http://localhost:3001

Option 2: Docker Compose (Recommended)

  1. Clone the repository

    git clone <repository-url>
    cd resume-fix
  2. Update environment variables in docker-compose.yml

    # Change JWT_SECRET to a secure value
    JWT_SECRET: your_production_secret_key
  3. Start all services

    docker-compose up -d
  4. Access the application


πŸ“¦ Build & Production

Build for production

# Build both frontend and backend
npm run build:all

# Or build separately:
npm run build        # Frontend
npm run build:server # Backend

Start production server

npm start

Docker production build

docker build -t resume-fix .
docker run -p 3001:3001 \
  -e MONGODB_URI=mongodb://host.docker.internal:27017/resume_ats \
  -e JWT_SECRET=your_secret \
  resume-fix

πŸ§ͺ Testing

Unit Tests

npm test              # Run once
npm run test:watch    # Watch mode

End-to-End Tests

npm run test:e2e      # Run Playwright tests

Performance Tests

npm run test:perf     # Load testing

Security Tests

npm run test:security # Security checks

πŸ“ Project Structure

resume-fix/
β”œβ”€β”€ api/                      # Backend source
β”‚   β”œβ”€β”€ app.ts               # Express app setup
β”‚   β”œβ”€β”€ server.ts            # Server entry point
β”‚   β”œβ”€β”€ db/                  # Database connection
β”‚   β”œβ”€β”€ middleware/          # Auth & validation
β”‚   β”œβ”€β”€ models/              # Mongoose models
β”‚   β”œβ”€β”€ routes/              # API routes
β”‚   β”œβ”€β”€ services/            # Business logic
β”‚   └── utils/               # Helper functions
β”œβ”€β”€ src/                      # Frontend source
β”‚   β”œβ”€β”€ App.tsx              # Main app component
β”‚   β”œβ”€β”€ main.tsx             # Entry point
β”‚   β”œβ”€β”€ components/          # React components
β”‚   β”œβ”€β”€ pages/               # Page components
β”‚   β”œβ”€β”€ stores/              # Zustand stores
β”‚   β”œβ”€β”€ hooks/               # Custom hooks
β”‚   └── utils/               # Utilities
β”œβ”€β”€ e2e/                      # E2E tests
β”œβ”€β”€ scripts/                  # Utility scripts
β”œβ”€β”€ uploads/                  # Uploaded files
β”œβ”€β”€ docker-compose.yml        # Docker setup
β”œβ”€β”€ Dockerfile                # Production build
└── DOCUMENTATION.md          # Detailed docs

πŸ”‘ Environment Variables

Variable Description Default
PORT Server port 3001
NODE_ENV Environment development
MONGODB_URI MongoDB connection string mongodb://localhost:27017/resume_ats
JWT_SECRET Secret for JWT signing Required
CLIENT_ORIGIN Allowed CORS origins http://localhost:5173
MAX_FILE_SIZE_MB Max upload size 5
UPLOAD_DIR Upload directory ./uploads

πŸ“š API Endpoints

Authentication

  • POST /api/auth/register - Create new account
  • POST /api/auth/login - Login user
  • POST /api/auth/logout - Logout user
  • GET /api/auth/me - Get current user

Resumes

  • GET /api/resumes - List all resumes
  • POST /api/resumes - Upload new resume
  • DELETE /api/resumes/:id - Delete resume

Job Descriptions

  • GET /api/jds - List all job descriptions
  • POST /api/jds - Create job description
  • PUT /api/jds/:id - Update job description
  • DELETE /api/jds/:id - Delete job description

Analysis

  • POST /api/runs - Run ATS analysis
  • GET /api/runs - List all runs
  • GET /api/runs/:id - Get specific run

🎨 Key Features Explained

ATS Score Calculation

The platform analyzes:

  • Keyword Matching - How well your resume matches required skills
  • Format Compatibility - Resume structure and readability
  • Content Quality - Completeness and relevance
  • Experience Alignment - Match with job requirements

Resume Processing

  1. Upload PDF or DOCX file
  2. Extract text using specialized parsers
  3. Parse and structure content
  4. Store securely with metadata

Job Description Editor

  • Rich text formatting (bold, italic, lists, links)
  • Auto-save functionality
  • Placeholder guidance
  • Clean HTML output

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ”’ Security

  • Passwords are hashed using bcrypt
  • JWT tokens for session management
  • Input validation with Zod
  • File type verification
  • Rate limiting on API endpoints
  • Helmet.js for security headers
  • XSS protection with sanitize-html

πŸ“ž Support

For detailed documentation, see DOCUMENTATION.md

For issues or questions, please open an issue on the repository.


πŸ™ Acknowledgments

Built with modern web technologies and best practices for security, performance, and user experience.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors