Skip to content
This repository has been archived by the owner on May 11, 2021. It is now read-only.

Latest commit

 

History

History
65 lines (54 loc) · 3.25 KB

README.md

File metadata and controls

65 lines (54 loc) · 3.25 KB

JobHub Google Chrome Extension

📌 Keep track of job applications ad-hoc

Build Status

Login Popup Job Posting Form
Login Popup Job Posting Form

How to setup the project

Please check our contributors guide.

Why use the JobHub Extension

The Chrome extension is meant to be an ad-hoc access to the JobHub services. When the users are on a job application website, they don't need to stop browsing the post in order to open the JobHub website on a separate tab. Instead, they can start tracking the given application via the popup submit directly on the job posting website.

Folder Structure

.
├── .github # contains Code of Conduct & templates for PR/Issues
├── build   # generated by Webpack. Contains the final js/html/css/resources
├── data    # list of companies to scrape
├── lib     # generated by Bucklescript. ReasonML -> Javascript
├── src     # ReasonReact components & global stylesheet
├── .editorconfig       # linter
├── .travis.yml         # CI
├── bsconfig.json       # Bucklescript config
├── jsconfig.json       # VSCode intellisense for Chrome API
├── manifest.json       # Chrome Extension config
├── package.json        # Node config
├── popup.html          # html of the extension
└── webpack.config.js   # Webpack config

Architecture

           popup.html
               |
             App.re
             {token}
               |
   +-----------+-----------+
   |                       |
Login.re               JobApp.re
                           |
                   ScrapingInputs.re

token is the state variable which is initially obtained by Login during the authentication process and in subsequent execustions of the extension its validity is confirmed by App directly. The variable is passed onto the JobApp component to be able to submit job applications.

The system leverages the following modules

  • ScrapingFunctions.re: functions related to extracting/processing HTML elements
  • Services.re: functions related to asynchronous actions external to the extension (load files/API calls)
  • SyncStorage.re: functions related to the Chrome storage management
  • Uilities.re: general purpose helper functions

Limitations

  • Currently, the only supported posted date scraper pattern is "<num> days ago"
  • Currently, the extension does not have a deadline date scraper
  • Because of the bucklescript-chrome bindings used to build the extension,
    we are locked with outdated versions of core libraries such as React and Bucklescript
  • For the same reason as above, we can't use Chrome's Content Scripts.
    Instead we inject a script into the active website to extract DOM information.