📌 Keep track of job applications ad-hoc
Login Popup | Job Posting Form |
---|---|
Please check our contributors guide.
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.
.
├── .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
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 elementsServices.re
: functions related to asynchronous actions external to the extension (load files/API calls)SyncStorage.re
: functions related to the Chrome storage managementUilities.re
: general purpose helper functions
- 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 asReact
andBucklescript
- 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.