GithubHelp home page GithubHelp logo

andreatj / expense_tracker Goto Github PK

View Code? Open in Web Editor NEW
8.0 1.0 1.0 26 KB

Expense Tracker APP, using Python (Flask), MySQL / SQLAlchemy, Gunicorn, Jenkins & Pytest.

License: MIT License

Python 78.22% HTML 21.78%
expenses-tracker trello-board user-stories crud-functionality jenkins mysql-database sqlalchemy gunicorn pytest flask

expense_tracker's Introduction

Expenses Tracker APP

Installation

  1. Run

pip3 install -r requirements.txt.

  1. Create config.py.

    Prerequisite = A pre-existent database in a MySQL server

    Rename config_template.py to config.py and fill in the information required.

  2. Run

    python3 create.py

  3. Run

    python3 app.py

Documentation

The following document contains the breakdown of the development process of "Expense Tracker App". This web application aims to help its users keep their day-to-day expenses under control.

The agreed requirements for this project / app are the following:

  • An application with full CRUD functionality, using the following technologies (which we have learned during the last 4 weeks):

    • Databases (MySQL / SQLAlchemy)
    • Python Programming Language
    • Python Web Development: Flask / Gunicorn
    • Continuous Integration: Jenkins
    • Version control: Git
    • Unit Testing with Python: Pytest
    • Cloud Fundamentals

User Goals & User stories

The main objective of creating this application is to put into practice the acquired knowledge, in a case similar to real life.

Therefore, the first step will be to define who would be the user of this application and why that person would want to use this tool.

The targeted audience for this application are people who want to understand how are spending their money in order to better control their personal finances.

Taking this information into account, we can start working on user stories and try to define what expectations our user may have.

(*)In order to satisfy, the MVP, I have prioritized the user stories that were focused on CRUD functionality and have left two of the stories (related to the visualization of expenses) for future releases.

Project Tracking

A Trello Board has been used to keep a constant tracking of my activities, where I have been annotating the tasks derived from user stories and all significant changes, trying to emulate the Agile methodology at all times.

The appearance of the board, during development.

The board has evolved as the development of the application did. Given the presence of blocks, I added a new tab called "Blocked" where the problems, that have needed investigation and a trial/error approach, are noted.

The appearance of the board, at the end of development.

Relational Database

The following diagram shows which tables will be created and what is their relationship (One to Many).

The application has two tables: Users and Expenses.

  • Users will store the personal data of our user such as their name and email
  • Expenses will store the information about the type of expenses of each user, a description, the date of purchase/expense and finally the amount spent.

CI - Pipeline

Once the bases of our project were defined, we began to code our application. This is when we start to go through our CI pipeline.

The code is created by the developer (VSCode, Python, Flask) and in order to track any changes, we use a VSC. After that, the CI server (Jenkins) handles all the automatic building, testing and deployment of the application. Once finished, a report is generated and if there is any failure, the developer is informed. Based on a Continuous Deployment approach, there is a final quality test before the application is ready for the Live Environment.

Every time the set of assigned tasks has been completed, we return to the Backlog (Trello) to find out what our next task or set of tasks is.

Risk Assessment

The following Risk Assessment identifies hazards and risk factors that have the potential to cause harm to our application deployment. I have listed the prevention measures that I have used to control the risk when the hazard cannot be eliminated.

Test results & Coverage

Two testing frameworks: Pytest and Unittest have been used in order to achieve the desired coverage level.

In this case, this application has been 100% tested in its relevant parts.

External Resources

Trello Board: Trello Board - Expenses Tracker App

Power Point Presentation: Power Point Presentation - Expenses Tracker APP

Future Releases

After the application deployment has been completed, there are some additions and improvements that I would like to accomplish:

  • Improve the appearance of the application
  • Show expenses by categories and their evolution over time
  • Add the functionality to share expenses automatically with another person
  • Add the functionality to notify the user when they spend more than planned

Autor

Andrea Torres-Jaramillo

expense_tracker's People

Contributors

andreatj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

gadhesaurabh74

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.