Powered by Y8 BUDGE IT Always with you, Always in sync.
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
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?