A full-stack web application for creating ATS-friendly resumes with AI-powered features, multiple professional templates, and comprehensive resume analysis tools. Built with Flask and modern web technologies.
- 18+ Professional Templates - Choose from modern, elegant, academic, and creative designs
- Step-by-Step Builder - Intuitive multi-step form for easy resume creation
- Live Preview - Real-time preview of your resume as you build
- PDF Export - Download your resume as a high-quality PDF
- Resume Management - Save, edit, and manage multiple resumes
- Custom Sections - Add custom sections like projects, awards, publications
- AI Resume Generator - Generate professional resumes using OpenAI GPT
- Smart Resume Scoring - Get instant feedback on resume quality
- ATS Score Checker - Analyze resume compatibility with Applicant Tracking Systems
- Keyword Matching - Advanced TF-IDF and word overlap analysis
- AI Suggestions - Get personalized improvement recommendations
- Keyword Similarity - Compare resume keywords with job descriptions
- Structure Analysis - Verify required sections are present
- Formatting Check - Detect ATS-unfriendly formatting issues
- Missing Keywords - Identify important keywords to add
- Improvement Suggestions - Actionable tips to boost ATS compatibility
- User Authentication - Secure signup and login system
- Google OAuth - Quick sign-in with Google account
- Password Recovery - Forgot password functionality with email verification
- Session Management - Secure session handling
- User Dashboard - Manage all your resumes in one place
- Streamlit Admin Dashboard - Comprehensive admin interface
- User Management - View, block, and manage users
- Resume Analytics - Track resume creation statistics
- System Logs - Monitor application activity
- AI Chatbot - Admin support chatbot powered by OpenAI
- Data Export - Export user and resume data to CSV
- Resume Ranking - Automatic ranking based on completeness
- Skill Suggestions - AI-powered skill recommendations
- Contact Form - Email support functionality
- Responsive Design - Works seamlessly on desktop and mobile
- Dark Theme - Modern dark UI with neon accents
- HTML5 - Semantic markup
- CSS3 - Modern styling with custom properties and animations
- JavaScript (Vanilla) - No framework dependencies
- Bootstrap Icons - Icon library
- jsPDF - PDF generation
- html2canvas - Screenshot capture for PDF
- Python 3.8+ - Core programming language
- Flask 3.1.2 - Web framework
- MongoDB - NoSQL database (via PyMongo)
- Redis - Caching and session storage
- JWT - Token-based authentication
- OpenAI GPT - AI resume generation and suggestions
- spaCy - Natural language processing
- scikit-learn - TF-IDF vectorization and cosine similarity
- NLP - Keyword extraction and analysis
- pdfplumber - PDF text extraction
- Flask-CORS - Cross-origin resource sharing
- Flask-Mail - Email functionality
- Authlib - OAuth integration
- python-dotenv - Environment variable management
- Streamlit - Admin dashboard framework
- Git - Version control
- Virtual Environment - Python dependency isolation
- Logging - Comprehensive logging system
resume-maker-clean/
│
├── FSD/ # Frontend Static Directory
│ ├── HTML/ # HTML pages
│ │ ├── loginPage.html
│ │ ├── signUp.html
│ │ ├── documents.html # Resume management
│ │ ├── step-1.html # Personal info
│ │ ├── step-2.html # Education
│ │ ├── step-3.html # Experience
│ │ ├── step-4.html # Skills
│ │ └── choose-template.html
│ │
│ ├── CSS/ # Stylesheets
│ │ ├── main.css
│ │ ├── documents.css
│ │ └── step-*.css
│ │
│ ├── JS/ # JavaScript files
│ │ ├── documents.js
│ │ ├── step-*.js
│ │ └── build-resume.js
│ │
│ ├── IMG/ # Images & assets
│ │
│ └── templates/ # Resume templates (18+)
│ ├── template-academic-yellow/
│ ├── template-blue-corporate/
│ ├── template-dark-elegant/
│ ├── template-glassmorphism/
│ └── ... (15 more templates)
│
├── Python/ # Backend source code
│ ├── config/ # Configuration files
│ │ ├── app_config.py
│ │ ├── db.py # MongoDB connection
│ │ └── redis_config.py
│ │
│ ├── Controller/ # Route controllers
│ │ ├── user_controller.py
│ │ ├── resume_controller.py
│ │ ├── ats_controller.py
│ │ ├── ai_resume_controller.py
│ │ └── admin_controller.py
│ │
│ ├── services/ # Business logic layer
│ │ ├── resume_service.py
│ │ ├── user_service.py
│ │ ├── ats_checker_service.py
│ │ ├── ai_resume_service.py
│ │ └── resume_score_service.py
│ │
│ ├── repo/ # Data access layer
│ │ ├── user_repo.py
│ │ └── resume_repo.py
│ │
│ ├── DTO/ # Data Transfer Objects
│ │
│ ├── utils/ # Utility helpers
│ │ ├── logger.py
│ │ ├── crypto_utils.py
│ │ └── mail_utils.py
│ │
│ ├── ai/ # AI-related modules
│ │ ├── resume_generator.py
│ │ └── prompts.py
│ │
│ ├── api/ # API endpoints
│ │ └── admin/
│ │ └── chatbot.py
│ │
│ ├── logs/ # Application logs
│ │
│ ├── app.py # Flask app factory
│ └── run.py # Application entry point
│
├── admin/ # Admin panel (Streamlit)
│ ├── admin_app.py
│ └── sections/
│ ├── dashboard.py
│ ├── users.py
│ ├── resumes.py
│ ├── analytics.py
│ ├── chatbot.py
│ └── system.py
│
├── .env # Environment variables (create this)
├── .gitignore
├── requirements.txt # Python dependencies
├── README.md # This file
└── ATS_SETUP.md # ATS checker setup guide
- Python 3.8+ installed
- MongoDB running locally or connection string
- Redis server (optional, for caching)
- OpenAI API Key (optional, for AI features)
git clone https://github.com/mihir021/resume-maker-.git
cd resume-maker-cleanWindows:
python -m venv venv
venv\Scripts\activateLinux / macOS:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtpython -m spacy download en_core_web_smCreate a .env file in the root directory:
# Flask Configuration
FLASK_ENV=development
SECRET_KEY=your_secret_key_here_min_32_chars
# Database
MONGODB_URI=mongodb://localhost:27017/resume_maker
# Redis (Optional)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# OpenAI (Optional - for AI features)
OPENAI_API_KEY=your_openai_api_key
# Email Configuration (Optional)
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_passwordMain Application:
python run.pyAdmin Panel (Separate Terminal):
streamlit run admin/admin_app.pyThe application will be available at:
- Main App: http://localhost:5000
- Admin Panel: http://localhost:8501
- Install MongoDB locally or use MongoDB Atlas (cloud)
- Update
MONGODB_URIin.envfile - Default database name:
resume_maker
Redis is used for caching and session management. If not available, the app will continue without it.
Install Redis:
- Windows: Download from https://redis.io/download
- Linux:
sudo apt-get install redis-server - macOS:
brew install redis
AI features require an OpenAI API key:
- Sign up at https://platform.openai.com
- Get your API key from https://platform.openai.com/api-keys
- Add to
.envfile:OPENAI_API_KEY=sk-...
Features that require OpenAI:
- AI Resume Generator
- AI-powered improvement suggestions
- Admin chatbot
- Go to Google Cloud Console
- Create a new project
- Enable Google+ API
- Create OAuth 2.0 credentials
- Add authorized redirect URI:
http://localhost:5000/api/google/callback - Copy Client ID and Secret to
.env
- Sign Up / Login - Create an account or sign in with Google
- Choose Template - Select from 18+ professional templates
- Fill Personal Info - Name, title, contact details, summary
- Add Education - Degree, institution, field of study
- Add Experience - Job titles, companies, descriptions
- Add Skills - Technical and soft skills
- Preview & Download - Review and export as PDF
- Click "Create with AI" button
- Enter job role and description
- Fill in your personal information
- Select experience level
- AI will generate a professional resume
- Review and save
- Click "ATS Score Checker" button
- Select a saved resume
- Paste the job description
- Click "Check ATS Score"
- Review:
- Overall ATS score (0-100)
- Keyword match percentage
- Missing keywords
- Structure analysis
- Formatting issues
- Improvement suggestions
- Run Streamlit admin app:
streamlit run admin/admin_app.py - Access at http://localhost:8501
- Features:
- View all users and resumes
- Block/unblock users
- View analytics and statistics
- Chat with AI assistant
- Export data to CSV
- View system logs
python test.pypython test_openai.py- Test user registration and login
- Create a sample resume
- Test PDF download
- Test ATS checker with a job description
- Test AI resume generator
- Password Hashing - Bcrypt password encryption
- Session Security - Secure session cookies
- CORS Protection - Configured CORS policies
- Input Validation - Server-side validation
- SQL Injection Protection - Using parameterized queries (MongoDB)
- XSS Protection - Input sanitization
- CSRF Protection - Session-based CSRF tokens
POST /api/users/signup- User registrationPOST /api/users/login- User loginGET /api/users/profile- Get user profilePOST /api/users/logout- User logout
GET /api/resumes- Get all user resumesPOST /api/resumes- Create new resumeGET /api/resumes/:id- Get resume by IDPUT /api/resumes/:id- Update resumeDELETE /api/resumes/:id- Delete resume
POST /api/ai-resume/create- Generate AI resume
POST /api/ats/check- Check resume from PDFPOST /api/ats/check-from-resume- Check saved resume
GET /api/admin/users- Get all usersPOST /api/admin/users/:id/block- Block userGET /api/admin/resumes- Get all resumesGET /api/admin/analytics- Get analytics
- Academic Yellow - Perfect for academic positions
- Blue Corporate - Professional corporate style
- Dark Elegant - Modern dark theme
- Glassmorphism - Trendy glass effect design
- Timeline Resume - Chronological layout
- Tech Look - Technology-focused design
- Ultra Clean - Minimalist and clean
- Classic Serif - Traditional professional
- Card Based - Card-style layout
- Infographic - Visual and creative
- Bold Red Accent - Eye-catching red accents
- Soft Green Minimal - Subtle green theme
- Split Header Modern - Modern split design
- Fresh Gradient - Colorful gradients
- Box Shadow - Depth with shadows
- Ultra Minimal - Maximum simplicity
- Modern Clean - Contemporary clean design
- Clean Profile - Profile-focused layout
Issue: MongoDB connection error
- Ensure MongoDB is running
- Check
MONGODB_URIin.env - Verify network connectivity
Issue: Redis connection error
- Redis is optional - app works without it
- Check Redis server is running if needed
- Verify
REDIS_HOSTandREDIS_PORTin.env
Issue: spaCy model not found
python -m spacy download en_core_web_smIssue: OpenAI API errors
- Verify API key in
.env - Check API quota and billing
- Ensure internet connection
Issue: PDF generation fails
- Check browser console for errors
- Ensure jsPDF library is loaded
- Try different browser
Issue: OAuth not working
- Verify Google OAuth credentials
- Check redirect URI matches exactly
- Ensure OAuth consent screen is configured
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Follow existing code style
- Add comments for complex logic
- Update documentation if needed
- Commit your changes
git commit -m "Add: Description of your feature" - Push to your branch
git push origin feature/your-feature-name
- Open a Pull Request
- Describe your changes
- Reference any related issues
- Add screenshots if UI changes
- Use meaningful variable names
- Add docstrings to functions
- Follow PEP 8 for Python code
- Use consistent indentation (4 spaces)
- Comment complex logic
This project is licensed under the MIT License.
See the LICENSE file for details.
- OpenAI - For GPT API powering AI features
- spaCy - For NLP capabilities
- scikit-learn - For ML algorithms
- Flask - For the web framework
- MongoDB - For database
- Bootstrap Icons - For icon library
- jsPDF - For PDF generation
For issues, questions, or contributions:
- GitHub Issues: Create an issue
- Email: [Your email here]
- Multi-language support
- Resume sharing via link
- Cover letter generator
- Resume templates marketplace
- Advanced analytics dashboard
- Mobile app (React Native)
- Integration with job boards
- Resume versioning system
- Collaborative editing
- Video resume support
Made with ❤️ for job seekers worldwide
Last updated: February 2026