A comprehensive web application that helps users analyze their career gaps, create personalized learning roadmaps, and track their progress towards professional goals.
Link to the Project: https://w3qk3yvwxp.us-east-1.awsapprunner.com/
This platform combines resume analysis, job description parsing, and AI-powered insights to provide users with actionable career development recommendations. Users can create workspaces, upload their resumes and job descriptions, receive detailed gap analysis, and follow structured learning plans.
- Resume Analysis: Upload and parse resume content to extract skills and experience
- Job Description Processing: Analyze job postings to identify required skills and qualifications
- Gap Analysis: Compare current skills against job requirements to identify areas for improvement
- Learning Roadmaps: Generate personalized study plans with daily tasks and milestones
- Progress Tracking: Monitor completion of learning tasks with calendar and list views
- Workspace Management: Organize multiple career development projects in separate workspaces
- Modern Design: Clean, responsive interface built with React and Material-UI
- Interactive Calendar: Visual task tracking with square calendar cells
- Task Management: Mark tasks as complete and view progress statistics
- Workspace Cards: Easy navigation between different career projects
- Real-time Updates: Immediate feedback on task completion and progress
- React 18: Modern React with hooks and functional components
- TypeScript: Type-safe development
- Material-UI: Professional UI components and theming
- React Router: Client-side routing
- Axios: HTTP client for API communication
- Python 3.9+: Core backend language
- Flask: Web framework for API development
- TiDB: Distributed SQL database for data storage
- PyMySQL: Database connectivity
- JWT: Authentication and session management
- Groq API: Large language model integration for analysis
- Custom Prompts: Specialized prompts for career gap analysis
- Data Parsing: Intelligent extraction of skills and requirements
├── backend/ # Backend application
│ ├── src/
│ │ ├── models/ # Database models
│ │ ├── routes/ # API routes
│ │ ├── ai_modules/ # AI integration
│ │ ├── config/ # Configuration files
│ │ └── utils/ # Utility functions
│ ├── requirements.txt # Python dependencies
│ └── run.py # Application entry point
├── frontend/ # Frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── contexts/ # React contexts
│ │ ├── services/ # API services
│ │ └── styles/ # CSS styles
│ ├── package.json # Node.js dependencies
│ └── public/ # Static assets
└── README.md # This file
- Node.js 16+ and npm
- Python 3.9+
- TiDB database access
- Groq API key
-
Navigate to the backend directory:
cd backend -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables:
cp env.example .env # Edit .env with your database and API credentials -
Initialize the database:
python src/config/init_database.py
-
Start the backend server:
python run.py
The backend will be available at http://localhost:5001
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm start
The frontend will be available at http://localhost:3000
- Sign up or log in to your account
- Click "Create New Workspace" on the home page
- Enter a workspace name and description
- The workspace will appear in your dashboard
- Select a workspace from your dashboard
- Upload your resume (PDF format)
- Add a job description (text or PDF)
- The system will automatically parse and analyze the content
- After document upload, navigate to the Analysis page
- Review the gap analysis results
- See recommended skills to improve
- View your strengths and areas for development
- Go to the Tracker page after analysis
- View your personalized learning roadmap
- Use the calendar to see daily tasks
- Mark tasks as complete to track progress
- Monitor your overall progress in the sidebar
- View: Click on any workspace card to open it
- Delete: Use the three-dots menu on workspace cards to delete them
- Organize: Create separate workspaces for different career goals
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logout
GET /api/workplaces- Get user workspacesPOST /api/workplaces- Create new workspaceGET /api/workplaces/{id}- Get specific workspacePUT /api/workplaces/{id}- Update workspaceDELETE /api/workplaces/{id}- Delete workspace
POST /api/resume/upload- Upload resumePOST /api/job-description/parse- Parse job description
POST /api/analysis/generate- Generate career gap analysisPOST /api/create-roadmap- Create learning roadmap
POST /api/goals- Create learning goalsGET /api/goals/workplace/{id}- Get workspace goalsPOST /api/task-completions- Mark task completion
- users: User account information
- workplaces: Career development workspaces
- resumes: Uploaded resume documents
- job_descriptions: Job posting data
- goals: Learning goals and roadmaps
- task_completions: Task completion tracking
- Create database models in
backend/src/models/ - Add API routes in
backend/src/routes/api_routes.py - Update frontend services in
frontend/src/services/api.ts - Create UI components in
frontend/src/components/ - Add pages in
frontend/src/pages/
- Follow PEP 8 for Python code
- Use TypeScript strict mode for frontend
- Maintain consistent naming conventions
- Add proper error handling and logging
- Database Connection: Ensure TiDB is running and credentials are correct
- API Errors: Check backend logs for detailed error messages
- Frontend Build: Clear node_modules and reinstall if build fails
- Authentication: Verify JWT tokens are being handled correctly
- Backend logs: Check console output when running
python run.py - Frontend logs: Use browser developer tools console
- Database logs: Check TiDB server logs
This application is configured for deployment on AWS App Runner using Docker containers. The deployment combines the React frontend and Flask backend into a single container with Nginx as a reverse proxy.
- AWS CLI installed and configured
- Docker installed and running
- AWS Account with permissions for ECR and App Runner
- TiDB Cloud database instance
- Groq API key
The production deployment uses:
- Single Docker Container: Multi-stage build combining frontend and backend
- Nginx: Serves static React files and proxies API requests
- Flask Backend: Runs internally on port 5001
- External Services: TiDB Cloud database and Groq API
-
Automated Deployment Script:
# For Linux/Mac ./deploy-aws.sh # For Windows PowerShell ./deploy-aws.ps1
-
Manual Deployment Steps:
Step 1: Create ECR Repository
aws ecr create-repository --repository-name hackathon-tidb-app --region us-east-1
Step 2: Build and Push Docker Image
# Build the image docker build -t hackathon-tidb-app:latest . # Get AWS account ID and create ECR URI AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) ECR_URI="${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/hackathon-tidb-app" # Tag and push to ECR docker tag hackathon-tidb-app:latest ${ECR_URI}:latest aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${ECR_URI} docker push ${ECR_URI}:latest
Step 3: Create App Runner Service
- Go to AWS App Runner Console
- Click "Create service"
- Choose "Container registry" as source
- Select your ECR repository
- Configure service settings:
- Service name:
hackathon-tidb-app - Virtual CPU: 1 vCPU
- Virtual memory: 2 GB
- Port: 80
- Service name:
Configure these environment variables in the App Runner console:
Required Variables:
FLASK_ENV=production
TIDB_HOST=your_tidb_host
TIDB_PORT=4000
TIDB_USER=your_tidb_user
TIDB_PASSWORD=your_tidb_password
TIDB_DATABASE=your_database_name
GROQ_API_KEY=your_groq_api_key
Optional Variables:
TIDB_SSL_DISABLED=False
TIDB_MAX_CONNECTIONS=10
TIDB_CONNECT_TIMEOUT=10
TIDB_READ_TIMEOUT=30
TIDB_WRITE_TIMEOUT=30
The application uses a multi-stage Docker build:
- Frontend Stage: Builds React application using Node.js
- Backend Stage: Prepares Python Flask application
- Production Stage: Combines both with Nginx reverse proxy
Key features:
- Optimized for production with minimal image size
- Nginx serves static files and proxies API requests
- Single container deployment for simplified management
- Health checks and proper logging
- Logs: Available through AWS CloudWatch Logs
- Metrics: Monitor through App Runner console
- Health Checks: Automatic health monitoring included
- Scaling: Auto-scaling based on traffic
Common Issues:
-
Build Failures:
- Ensure Docker is running
- Check all dependencies are listed in requirements.txt
- Verify .dockerignore is properly configured
-
Runtime Errors:
- Verify all environment variables are set
- Check CloudWatch logs for detailed errors
- Ensure database connection details are correct
-
API Connection Issues:
- Verify Nginx configuration is correct
- Check backend is running on port 5001
- Test API endpoints directly
Debug Commands:
# Test Docker build locally
docker build -t test-app .
docker run -p 80:80 test-app
# Check container logs
docker logs <container-id>
# Test API endpoints
curl http://localhost/api/healthFor detailed deployment instructions, see AWS_DEPLOYMENT_GUIDE.md.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is developed for educational and hackathon purposes.
For questions or issues, please check the troubleshooting section or create an issue in the repository.