Structure overview

At the top level, there are several things to note.
The src directory contains all the source files pertaining to the project.
The linter files and package files are related to our build and testing environments.
Source files

In the source directory, we've split our source files into three self-explanatory directories.
manifest.json contains the extension context required by the chrome browser. They serve to define the structure of the extension to the runtime environment.
JavaScript files

- api.js is responsible for a few firebase communication functions.
- auth.js provides the authentication for user to get access to the database.
- background.js is responsible for the main logic of the project. For example, calculating the productivity score, incrementing the time of visits of a specific domain, etc.
- background_comm.js is responsible for a few event handlers to communicate between the database and the user.
- config.js is responsible for the configuration of the database.
- constants.js houses the global constants used.
- options.js contains the logic for the options page.
- util.js contains various helper functions, such as random string generation.