To have a software that records income and expenses with evidence neatly with access control to different people within the same organization.
Component | Type | Implementation |
---|---|---|
Front-end | Website | React + Bootstrap |
Back-end | Python | Nginx + Gunicorn + Flask + Docker |
Database | SQL | MySQL |
Client-server model:
URL request handling with user authentication:
Google login flow diagram:
Page |
Description |
---|---|
index.html |
Showcase page for the project. |
login.html |
Login page. |
register.html |
Registration page. |
activation.html |
Activation page for new user. |
dashboard.html |
UI after login with navigation among sub-sections. |
404.html |
404 not found page. |
500.html |
500 internal server error page. |
The table excludes interaction with the database or any other external libraries or services.
API/Route |
Description | Return |
---|---|---|
/api/index |
Index page. | Index page. |
/auth/login |
User login. | Redirect URL. |
/api/new_reimburse_request/<username> |
Create a new reimbursement request. | Boolean. |
/api/cencel_reimburse_request |
Cancel an existing reimbursement request. | Boolean. |
/api/see_reimburse_history/<username> |
See the submitted reimbursement history of a user. | JSON. |
/account_settings/<username> |
Page for displaying account settings. | JSON. |
/change_account_settings/<setting> |
Change account settings. | Boolean. |
/process_reimburse |
Process submitted reimbursement requests. | Boolean. |
/auth/logout/<username> |
User logout. | Login page. |
/privacy_policy |
Privacy policy page. | Static page. |
/terms_of_service |
Terms of service page. | Static page. |
-
Team members start with their own branches after git clone.
-
Do not push changes to the master branch directly.
-
Initiate pull requests for merging code into the master branch.
-
Team members need to pull the master branch regularly while working to ensure merge compatibility.
-
Include unit tests in every possible subsection in the implementation.
-
Unit tests will run on Travis CI, a platform for continuous integration that is free for open-source project.
-
Use GitHub features such as project management properly.
-
Always write high quality code that make it easy for others to understand.
-
Get a Linux server running Debian or Ubuntu.
-
Configure the server firewall rules from the vendor console.
-
Clone the code to the production server.
-
Change to the book-keeper-back-end directory.
-
Set the environment variables with the
export
command. -
Run deployment.sh.
Use SSL Server Test for a thorough test report on the security level of the server. It may take several minutes to run.
To write down ideas: Google Doc link
Client-side vs. Server-side vs. Pre-rendering for Web Apps
REST API concepts and examples
Create a Flask Application With Google Login
How To Create a React + Flask Project
How to Deploy a React + Flask Project
How NOT to Store Passwords! - Computerphile
Running an SQL Injection Attack - Computerphile
Basic Steps for MySQL Server Deployment with Docker
How To Serve Flask Applications with Gunicorn and Nginx on Ubuntu 18.04