ApplyTracker is a comprehensive web application designed to help job seekers track their job applications, analyze resume compatibility with job postings using AI, and manage their job search process efficiently.
- Application Tracking: Track job applications with company details, position, status, and dates
- Resume Upload: Upload and store PDF resumes for each application
- AI-Powered Analysis: Analyze resume compatibility with job postings using Groq AI
- Status Management: Track application progress through stages (applied, interviewing, offer, hired, rejected)
- Search & Filter: Search applications by company name and filter by status
- User Authentication: Secure login/signup with Passport.js
- User Profiles: Manage personal information, bio, location, and website
- Password Management: Change password functionality
- File Upload: Resume file handling with Multer
- PDF Processing: Extract text from PDF resumes for analysis
- Caching: Intelligent caching for AI analysis results
- Error Handling: Comprehensive error handling and user feedback
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database with Mongoose ODM
- Passport.js - Authentication middleware
- Multer - File upload handling
- Joi - Data validation
- EJS - Templating engine
- EJS-Mate - Layout templates
- CSS - Custom styling
- JavaScript - Client-side functionality
- Groq SDK - AI-powered resume analysis
- PDF-Parse - PDF text extraction
-
Clone the repository
git clone <repository-url> cd applyTracker
-
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory with the following variables:PORT=3000 SECRET=your-secret-key-here GROQ_API_KEY=your-groq-api-key-here
-
Database Setup Ensure MongoDB is running locally on
mongodb://127.0.0.1:27017/application -
Start the application
npm start
PORT: Server port (default: 3000)SECRET: Session secret for authenticationGROQ_API_KEY: Groq API key for AI analysis
The application uses MongoDB with the following collections:
users: User authentication and profile dataapplications: Job application tracking data
- Create Application: Add new job applications with company details, position, and resume
- Track Status: Update application status through the hiring pipeline
- Analyze Resume: Get AI-powered analysis of resume compatibility with job postings
- Search & Filter: Find applications by company or filter by status
- Upload a PDF resume with your application
- Click "Analyze Resume" to get AI-powered feedback
- Receive compatibility score, strengths, and improvement suggestions
applyTracker/
├── controllers/ # Route controllers
│ ├── applyTracker.js # Application management
│ ├── auth.js # Authentication
│ └── user.js # User management
├── models/ # Database models
│ ├── apply.js # Application schema
│ └── auth.js # User schema
├── routes/ # Express routes
│ ├── applyTracker.js # Application routes
│ ├── auth.js # Authentication routes
│ └── user.js # User routes
├── utils/ # Utility functions
│ ├── analyseResume.js # AI analysis logic
│ ├── catchAsync.js # Async error handling
│ └── expressError.js # Custom error class
├── views/ # EJS templates
│ ├── applyTracker/ # Application views
│ ├── auth/ # Authentication views
│ ├── user/ # User profile views
│ └── layout/ # Layout templates
├── public/ # Static assets
│ ├── css/ # Stylesheets
│ └── js/ # Client-side JavaScript
├── uploads/ # File upload directory
├── index.js # Main application file
├── middleware.js # Custom middleware
├── joiSchema.js # Validation schemas
└── package.json # Dependencies and scripts
GET /login- Login pagePOST /login- User loginGET /signup- Signup pagePOST /signup- User registrationGET /logout- User logout
GET /application- List all applicationsGET /application/new- New application formPOST /application- Create new applicationGET /application/:id- View application detailsGET /application/:id/edit- Edit application formPUT /application/:id- Update applicationDELETE /application/:id- Delete applicationGET /application/:id/analysis- Analyze resume
GET /user/:id- User profileGET /user/:id/edit- Edit profilePUT /user/:id- Update profileGET /user/change-password- Change password formPUT /user/change-password- Update password
- Responsive design
- Flash messages for user feedback
- Form validation
- File upload interface
- Status badges and visual indicators
- Search and filter functionality
- Password hashing with passport-local-mongoose
- Session management with express-session
- CSRF protection
- File upload validation
- Input sanitization and validation
- Authentication middleware
Applications can have one of the following statuses:
- Applied - Application submitted
- Interviewing - In interview process
- Offer - Received job offer
- Hired - Successfully hired
- Rejected - Application rejected
The resume analysis feature uses Groq AI to:
- Compare resume content with job posting requirements
- Generate compatibility score (0-100)
- Provide specific strengths and improvement suggestions
- Cache results for performance optimization
- Handle API rate limiting and service outages gracefully
- Node.js (v14 or higher)
- MongoDB database
- Groq API account
- Set up production environment variables
- Configure MongoDB connection string
- Install dependencies:
npm install --production - Start the application:
npm start
This project is licensed under the ISC License.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- MongoDB Connection Error: Ensure MongoDB is running locally
- File Upload Issues: Check uploads directory permissions
- AI Analysis Failing: Verify GROQ_API_KEY is set correctly
- Authentication Issues: Check session secret configuration
Check console logs for detailed error information and debugging.
For issues and questions, please check:
- Application console logs
- MongoDB connection status
- Environment variable configuration
- File system permissions
ApplyTracker - Streamline your job search and make data-driven decisions with AI-powered resume analysis.