Skip to content

Multi-user app for keeping records of purchase and reimburse within an organization.

License

Notifications You must be signed in to change notification settings

GigaMansion/Book-Keeper

Repository files navigation

Book-Keeper

MIT License Version GigaMansion

Rationale

To have a software that records income and expenses with evidence neatly with access control to different people within the same organization.

Stack

Component Type Implementation
Front-end Website React + Bootstrap
Back-end Python Nginx + Gunicorn + Flask + Docker
Database SQL MySQL

Structural Diagrams

Client-server model:

client-server-model

URL request handling with user authentication:

route

Google login flow diagram:

google-login

Pages

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.

APIs

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.

Workflow

  1. Team members start with their own branches after git clone.

  2. Do not push changes to the master branch directly.

  3. Initiate pull requests for merging code into the master branch.

  4. Team members need to pull the master branch regularly while working to ensure merge compatibility.

  5. Include unit tests in every possible subsection in the implementation.

  6. Unit tests will run on Travis CI, a platform for continuous integration that is free for open-source project.

  7. Use GitHub features such as project management properly.

  8. Always write high quality code that make it easy for others to understand.

Deployment

  1. Get a Linux server running Debian or Ubuntu.

  2. Configure the server firewall rules from the vendor console.

  3. Clone the code to the production server.

  4. Change to the book-keeper-back-end directory.

  5. Set the environment variables with the export command.

  6. Run deployment.sh.

Security

Use SSL Server Test for a thorough test report on the security level of the server. It may take several minutes to run.

Resources:

To write down ideas: Google Doc link

Bootstrap

React

Client-side vs. Server-side vs. Pre-rendering for Web Apps

REST API concepts and examples

The Flask Mega-Tutorial

Create a Flask Application With Google Login

How To Create a React + Flask Project

How to Deploy a React + Flask Project

Testing Flask Applications

Coverage.py

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

The Twelve-Factor App

About

Multi-user app for keeping records of purchase and reimburse within an organization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •