A full-stack web application to help immigrants find jobs and understand how to become qualified in Canada.
- Secure Authentication: JWT-based auth with bcrypt password hashing
- Resume Parsing: PDF upload and text extraction using PyMuPDF
- Job Qualification Guidance: Step-by-step plans for Canadian certification
- Job Search: LinkedIn-style job search interface
- Progress Tracking: Visual progress indicators toward target jobs
- Profile Management: Edit personal details and resume
- Resume Templates: Canadian job market styled templates
- Frontend: Next.js with TypeScript
- Backend: FastAPI (Python)
- Database: MongoDB Atlas
- Authentication: JWT tokens
- PDF Processing: PyMuPDF (fitz)
ImmigrantJobFinder/
├── client/ # Next.js frontend
│ ├── components/ # React components
│ ├── pages/ # Next.js pages
│ ├── utils/ # Frontend utilities
│ └── types/ # TypeScript types
├── server/ # FastAPI backend
│ ├── routes/ # API routes
│ ├── services/ # Business logic
│ ├── models/ # Data models
│ └── utils/ # Backend utilities
└── shared/ # Shared types/interfaces
- Node.js 18+
- Python 3.8+
- MongoDB Atlas account
cd server
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reloadcd client
npm install
npm run devCreate .env files in both client/ and server/ directories:
server/.env:
MONGODB_URI=your_mongodb_atlas_connection_string
JWT_SECRET=your_jwt_secret_key
client/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:8000
- User signs up with name, email, password, location, job preference, and resume
- Password is hashed with bcrypt
- JWT token is generated and returned
- User can login with email/password
- Protected routes require valid JWT token
- PDF uploads are processed using PyMuPDF
- Text is extracted and structured
- Both original PDF and parsed text are stored in MongoDB
- Resume content is displayed for preview and editing
- Step-by-step certification plans based on profession and province
- Timeline estimates and progress tracking
- Interim job suggestions while working toward full qualification
- Progress percentage calculation
- LinkedIn-style job search interface
- Title and location-based search
- Pre-filled application forms
- Manual submission to avoid API abuse
- Visual progress indicators
- Step completion tracking
- Percentage readiness calculation
- Goal achievement milestones