/project-the-a-team

project-the-a-team created by GitHub Classroom

Primary LanguageJavaScript

Taximus Maximus

The easiest way to do easy taxes.

Taximus Maximus is a web application that automates the federal tax return calculation process. It will factor into account user income (paid vs. withheld), dependents, and filing status. For user income, it will be able to account for active income (W-2 income), passive income (interest, dividends), and portfolio income (capital gains). There will be the option for the user to download the tax return form after they fill out all the fields. With this product, we intend to target people who want to simplify the tax return process.

The system has been deployed at: https://tax.timothygu.me/

Steps to start a local development environment

Install Node.js 12.x

For Linux, please follow the official instructions to install Node.js. For Windows and macOS, please download installer from Node.js official website.

Be sure to select v12.x to be consistent with our environment.

Install the Yarn package manager

Please follow the official guide.

Install Docker and Docker Compose

Please follow the official guide of Docker and Docker Compose.

Running the frontend

Before any operations, be sure to run yarn at the project root directory to sync up the dependencies.

Then cd frontend and use yarn start to run the frontend in development mode. The development version of frontend will run on http://localhost:3000. To build a production version of frontend, use yarn build.

Running the backend

Before any operations, be sure to run yarn at the project root directory to sync up the dependencies.

Then run docker-compose up --build at the project root directory to start the backend (along with the database). To run the backend in the background (in detached mode), use docker-compose up --build -d. The development version of backend will run on http://localhost:8080/.

In order for PDF saving to work, you need to have access to a Google Cloud Storage bucket using the service account credentials in backend/config.json. Due to security concerns, we have disabled our testing account. Anyone who wishes to test that particular part of the code should either

Notes

Differences in our development version and production version

Our development version and production version (deployed on our server) are almost the same except that:

  • We use a different compose file (docker-compose-production.yml), which creates one more nginx container to serve frontend static files and enable TLS and security headers
  • We use a different Dockerfile (backend/Dockerfile-production), which sets a dedicated USER to be able to access the log file
  • We use a different backend config file (backend/config-production.json), which:
  • The frontend code is minified and optimized for production. You can do the same by running yarn build in frontend/, which generates the frontend/build directory.

About testing with TLS 1.3

Our production version is enforcing TLS 1.3. However, as far as we know, some testing tools does not support TLS 1.3 currently (including OpenSSL installed by default on Debian <10 and Ubuntu <18.04, as well as old browsers). If the latest version of the tool you are trying to use does not support TLS 1.3, try to use other tools, and remember that testing in the browser developer console should always work.