Tymotex / Employ.me

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 postings they are interested in.

Home Page:https://employ-me.netlify.app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Employ.me

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.

Deployed prototype here πŸš€

Built with:

  • React with Material UI
  • Flask
  • MongoDB

Features

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)

Setup Instructions

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"

Developer Notes

Frontend Directory Structure

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

Backend Directory Structure

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

About

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 postings they are interested in.

https://employ-me.netlify.app/


Languages

Language:Python 85.9%Language:JavaScript 13.5%Language:SCSS 0.4%Language:Shell 0.1%Language:HTML 0.0%Language:PowerShell 0.0%Language:Xonsh 0.0%Language:Dockerfile 0.0%