Employ.me is a web application that scrapes together job postings from major job-hunting platforms and provides automation services for the user to track their application for job postings they are interested in. This project was the winning entry for SENG2021 at UNSW and our team (AT3K) received the Macquarie Group Software Engineering prize for 1st place in SENG2021.
Built with:
- React with Material UI
- Flask
- MongoDB
A list of features Employ.me offers:
- Scrapes job postings from several sources and allows you to automate your job application tracking with a single click
- Manage and see your job applications in intuitive views:
- Spreadsheet β including filters, selectable columns, searching, and more
- Kanban board β clearly captures the state of each job application
- Calendar β highlights critical events such as upcoming interviews
- Personalise your job boards, write notes for each job application using an integrated rich text editor
- Statistics and automatic activity recording β allows you to access insights about your long term progress and career development through a statistics dashboard
- Social networking
- Connect with other users, see the resumes they have chosen to upload
- Receive valuable constructive criticism for your public resume and job profile from your peers. Leave feedback for your peers and the community will vote you up
- Automatically constructs a profile for you, based on a resume you upload (an opt-in experience)
Running the frontend development server
git clone https://github.com/Tymotex/Employ.me.git
cd client
npm install
# View the locally hosted frontend on http://localhost:3000/
npm start
Backend setup
cd server
pip3 install -r requirements.txt
# Install Resume parser dependencies
# 1. spaCy
python -m spacy download en_core_web_sm
# 2. nltk
python -m nltk.downloader words
python -m nltk.downloader stopwords
# Start the backend server.
python3 start.py
Set the environment variables in server/JobTracker/.env
:
SECRET_KEY="senpai"
GOOGLE_CLIENT_ID="client id here. Get one at http://console.cloud.google.com/"
GOOGLE_CLIENT_SECRET="client secret here. Get one at http://console.cloud.google.com/"
DB_URI="mongodb+srv://<username>:<password>@<clusterName>.vznsj.mongodb.net/jobtracker?retryWrites=true&w=majority" # Set up a MongoDB cloud instance here: https://docs.atlas.mongodb.com/getting-started/
ENV_TYPE="development"
# ENV_TYPE="production"
# Google Auth callback and redirect URLs:
DEV_REQUEST_REDIRECT_URI="http://127.0.0.1:5000/api/auth/googlelogin/callback"
PROD_REQUEST_REDIRECT_URI="https://jobtracker.club/api/auth/googlelogin/callback"
DEV_CLIENT_HOME_URL="http://localhost:3000"
PROD_CLIENT_HOME_URL="https://employ-me.netlify.app"
client/
βββ package.json
βββ public
β βββ favicon.ico
β βββ index.html
β βββ manifest.json
βββ README.md
βββ src
βββ AT3K # Where AT3K's files are
β βββ components # Where AT3K's React Components are defined
β β βββ job-boards # Dashboard workspace page's components
β β βββ job-dashboard # Dashboard index page's components
β β βββ job-lists # Job search page components
β β βββ job-details # Job detail page's components
β β βββ job-map # Job detail page's embedded map component
β β βββ company-profile # Company profile page's components
β β βββ profile # User profile components
β β βββ statistics # Statistics page components
β β βββ settings # Settings page components
β βββ layouts # Where AT3K's base React Components are defined
β β βββ AT3KLayout.js
β β βββ index.js
β β βββ mainContentStyles.module.scss
β β βββ menuItems.js
β β βββ README.md
β βββ pages # Where AT3K's page components (and routes) are defined
β β βββ 404.js
β β βββ FAQ.js
β β βββ Community.js
β β βββ CompanyProfile.js
β β βββ Home.js
β β βββ JobDashboard.js
β β βββ JobDashboardIndex.js
β β βββ JobDashboardWorkspace.js
β β βββ JobDetails.js
β β βββ JobSearch.js
β β βββ Profile.js
β β βββ ProfileEdit.js
β β βββ RouterList.js # Where front-end routes are defined
β β βββ Settings.js
β β βββ Statistics.js
β βββ themes # Where global Material UI styling rules are defined
β βββ default.js
β βββ index.js
βββ components # Reused base components
βββ context
βββ images
βββ index.js
βββ pages # Base pages
server
βββ JobTracker # Main package
β βββ api_routes/ # Where routes are defined and handled
β β βββ __init__.py
β β βββ auth.py # /api/auth routes
β β βββ company.py # /api/company routes
β β βββ job.py # /api/job routes
β β βββ jobs.py # /api/jobs routes
β β βββ stats.py # /api/stats
β β βββ tracker.py # /api/tracker
β β βββ user.py # /api/user routes
β βββ database_ops.py # Database interface helper functions
β βββ exceptions/ # Custom exceptions thrown by the server
β βββ __init__.py # Where the Flask app is instantiated and configured
β βββ routes.py # Where routers are registered to the Flask app
β βββ static/ # Public assets served by Flask
β βββ templates/ # HTML files served by Flask (only for testing API routes during development)
β βββ utils/ # General utilities for debugging, testing, etc.
βββ requirements.txt
βββ setup.py
βββ start.py # Basic script for starting the server