budge it - budget tracking web application

Post on 23-Jan-2017

34 Views

Category:

Engineering

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Powered by Y8

BUDGE ITAlways with you,Always in sync.

Powered by Y8

DEFINE BUDGETTells us what we can’t afford,doesn’t keep us from buying it.

- William Feather

Powered by Y8

1.WHAT IT DOES

Let’s start from the features.

Powered by Y8

MAIN FEATURES transactions

Manage your income and expenses.One transaction at a time.

Powered by Y8

MAIN FEATURES display graphs

It’s not just pretty.It’s the best way to make sense of data.

Powered by Y8

MAIN FEATURES secure login

SHA-256 hashing for secure password storage.As recommended by NIST.

Place your screenshot here

Powered by Y8

MAIN FEATURES | brief demo

http://localhost:8000

Powered by Y8

2.HOW IT WORKS

Talking about architecture.

Powered by Y8

PROJECT STRUCTUREframeworkWe used a Python-based framework.It has a steeper learning curve, but it helped us later.

Powered by Y8

PROJECT STRUCTURE | framework

▸ Broken down into “apps”▸ Divided by functionalities:

▹ Users▹ Transactions▹ Schedules▹ Statistics

Apps contain templates (HTML based) and functionality (Python code)

Powered by Y8

PROJECT STRUCTUREdjango Web Browser

URL mapping

Python Classes

TemplatesStatic Files

Powered by Y8

PROJECT STRUCTURE | database

▸ MySQL server provided by the school

▸ Tables created by django

Models (i.e. Python objects) give django the parameters needed for the tables.Object Relational Mapping mediates between MySQL and Python

Powered by Y8

PROJECT STRUCTURE | database

Table Function

category_category Used to group transactions together

schedules_schedule Used to plan transactions

transactions_transaction

Used to monitor incomes and expenses

auth_userUsed to authenticate user and store basic information

Powered by Y8

3.HOW IT’S BUILT

It’s time to get technical.

Powered by Y8

TECHNICAL DETAILS | tools

Backend▸ Python▸ Django

Frontend▸ HTML▸ CSS▸ Bootstrap

Code management and scheduling

▸ Git▸ Trello

Powered by Y8

TECHNICAL DETAILS | decisions

▸ Dividing the project into applications

▹ Each for a set of related tasks▹ Keeps files organised▹ Avoids conflicts while editing

▸ Using django’s users table and functions

▹ Password hashing▹ Input sanitisation▹ Authentication

Powered by Y8

TECHNICALDETAILSsign-in

Powered by Y8

TECHNICAL DETAILS | alternatives

▸ Why not PHP and SQL?▹ Interested in using new tools▹ Built-in functions▹ SQL queries done in background▹ Improving knowledge of Python

Powered by Y8

4.HOW WE ORGANISED

Making it happen.

Together.

Powered by Y8

PROJECT PLANNING | decisions

▸ Organise meetings to discuss issues and report progress on a weekly basis

▸ Use instant messaging on a daily basis

▸ All decisions had to be taken by consensus

Powered by Y8

PROJECT PLANNING | meetings

▸ Every meeting had a chair▹ Check progress of the group▹ Propose plans for the following

week▹ Update Trello

▸ Everyone was asked some questions

▹ What progress they did▹ What difficulties they had▹ What were their plans for the

following week

Powered by Y8

TRELLOscheduling

Powered by Y8

PROJECT PLANNING | work division

▸ Project divided into two parts▹ Frontend▹ Backend

Every member chose a side, based on their interests and abilitiesKnowledge was shared, so that everybody could have a complete understanding of the project

Powered by Y8

PROJECT PLANNINGversion control

▸ Integrating from different people

▸ Using GitLab▸ Separate branches

for different features

Powered by Y8

PROJECT PLANNING | ethical

User privacy is very important to us▸ How we protect it: ▸ Maintain the confidentiality of user

data in storage▸ Transparency to users▸ Enable the user to make informed

decisions▸ No copyrighted material used

Powered by Y8

PROJECT PLANNING | ethical

Followed WAI guidelines :▸ Design should be controllable from

other peripherals and not just the mouse

▸ Page should be compatible on several platforms

▸ Use of markups and style sheets should be done where needed

▸ Tables should transform properly▸ Avoid grammatical or sequential

errors

Powered by Y8

5.WHAT WE LEARNED

If we could start again...

Powered by Y8

STARTING AGAIN | changes

▸ Know how to approach a django project▸ Look into other frameworks such as

Spring▸ Be more rigorous with early testing

▸ More group coding sessions▹ Minimises waiting▹ Effective cooperation▹ Dynamic environment

Powered by Y8

STARTING AGAIN | changes

▸ Use Trello all the way through development

▸ Better branching and task splitting▹ More effective branch names▹ Division into apps to be done earlier

▸ Give more importance to side features▹ Easy to implement▹ Add a lot of functionality

▸ Implement more graph interaction▹ Dynamically allow people to pull out

optional payments

Powered by Y8

STARTING AGAIN | possibilities

▸ Splitting up into groups according to apps rather than just a frontend and backend team

▸ Address legal and ethical issues with data protection

▸ Better support for the visually impaired

Powered by Y8

THANKS!Any questions?

top related