Skip to content

GitauHarrison/mbeca-ciaku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mbeca Ciaku

Mbeca (pronounced as 'besha') means "money" and Ciaku (pronounced as 'shiaku') means "mine" in Kikuyu, one of the venacular languages in Kenya. Put together, you get "My money". This project is aimed at helping a user to visualize his money.

Project image here

Table of Contents

Overview

For many years, I have used Google Sheets to record how my money comes in and goes out. At the end of each day, preferably at night, I consistently update this file with the current state of my money.

Excel Data

It works well, but it is quite cumbersome to use over a long period of time. For example, I have to manually create the table structures occassionally. I also have to manually add the formulas to generate a chart of my income and expenses. The data is good, but if you cannot visualize it, then it is hard to know what is going on.

Sample expense data

Visualize Expense Data

Besides detailed budget, income and expenses data, I wanted to have a summary of the health status of my money. I would compare my expenses to my budget and see if I was spending too much. Of course, expenses are made possible by my income. This cashflow is what can enable one to buy an asset and experience freedom or live a liability-filled life.

Sample financial statement

Visualize Financial Statement

Mbeca Ciaku is an attempt to create an easier solution to this small problem. Besides simplicity, I wanted to make an application that would be usable by multiple other people. These users can download their data for offline analysis. The downloaded data would be organized and encrypted in a PDF file.

Inspired by MPesa, I found the encryption process of personal data very interesting. This feature is really useful in the quest to guard against the rampant MPesa fraud cases. If you are an active MPesa user, sometimes you would like to refer to your transactions to settle a dispute, confirm a payment, or to make a complaint. Whatever the case, Safaricom allows you to easily request for a copy of your transaction data for free. The statement would be sent to you via email. This file is encrypted and can only be accessed by you. At the time of this writing, decrypting the file is dependant on the user providing their National ID number plus a one-time numeric token sent to their phone. The decryption format is "ID-token".

Features

  • Password-based user authentication
  • Two-factor authentication
  • Email notification
  • Interactive tables with search, sort and pagination functionality
  • Download of user data as PDF file
  • Encryption of downloaded PDF file
  • Tests
  • Custom support dashboard
  • Dynamic charts

Tools Used

Deployed Application

Contributors

GitHub Contributors

Testing The Application Locally

  1. Clone the repository

    $ git clone git@github.com:GitauHarrison/mbeca-ciaku.git
  2. Change to the repository directory

    $ cd mbeca-ciaku
  3. Create and activate a virtual environment

    $ virtualenv venv
    $ source venv/bin/activate
    
    # OR using virtualenvwrapper
    
    $ mkvirtualenv mbeca-ciaku
  4. Install dependencies

    (mbeca-ciaku)$ pip3 install -r requirements.txt
  5. Create .env file in the root directory to store all needed environment variables

    (mbeca-ciaku)$ touch .env
  6. Update .env file with the variables seen in .env-template file in the repository root directory

    # Example .env-template file
    
    SECRET_KEY=
    PDF_FOLDER_PATH=
    QUESTIONS_PER_PAGE=

    Note on how to generate a random string for the SECRET_KEY variable:

    # On terminal
    $ python -c "import os; print(os.urandom(24))"
    
    # Output: b'\xc5\xdd\xb3s\xab<\xcc;h$>\x83f>e$\x03\xb8\xc8\xd1\xce\tZ\xd1'
    
    # Or
    
    (mbeca-ciaku)$ python -c 'import secrets; print(secrets.token_hex(16))'
    
    # Output:  ff4fcb6dc2243c5050677dca63c05112
    
    # Or
    
    # Get password from https://www.grc.com/passwords.htm
  7. Run the application

    (mbeca-ciaku)$ flask run
  8. Paste the localhost URL http://127.0.0.1:5000 into your browser. You should be able to see the application.

  9. Run the tests

    (mbeca-ciaku)$ python3 -m tests.py

Areas of Improvement

  • User interface design
  • Proper display of multiple graphs on specific charts (based on data years)
  • Disabling of the Edit link in the help page after a specified duration
  • Automatic email notifications to remind users to update their data

About

Visual representation of a user's financial statement: The app shows a user how his money comes in and goes out. Being able to see your money may help improve personal finance habits.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors