aureleoules / Py_Expense_template

SIGL 2024 Python Course

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Python Group Expense tracker

Abstract

Ever wondered why Tricount and Splitwise never made a CLI version of their respectives applications ? Don't keep on waiting, do it yourself ! Today we'll be creating a CLI application allowing to track your expenses and their repartition within your friends or your family.

Pre-requisites

  • Have Python (>=3.7) installed on your computer
  • Install the PyInquirer library using pip (pip install pyinquirer)

Useful References

Advices

Code quality and lisibility as well as documentation on how you solved problems will be greatly appreciated/rewarded Cheating is allowed, but getting catched isn't Creation of new files is recommended. Clean architectures will be rewarded

Todo-list

Functional View

  • A new expense can be added (Mandatory expense information : Amount, label, Spender)
  • Expense registry is stored in an external file on an appropriate format for persistency (CSV is fine, any other relevant format would be cool)
  • A new user can be created (Mandatory user information : Name)
  • Users are stored in an external file for persistency
  • When adding a new expense, Spender should be chosen among existing users
  • An expense can be divided between several existing users. By default, total amount of the expense will be evenly split between all involved users and spender should automatically be checked as involved in the expense
  • New mandatory expense information : People involved in the expense

Functional View

Example

  • A status report can be accessed from the main menu, synthesizing who owes who. Every user must appear only once in the report, so you must synthesize reimbursements. Exemple: 3 Users :
  • User1 owes 34,56€ to User2
  • User2 owes nothing
  • User3 owes 14,72€ to User2
  • Add the possibility to mark a debt as payed from the status report
  • Think of new ways of spliting the expense (Percentage / person, Amount / person, anything that makes sense)
  • User Input Validation : Throw an error if an expense amount is not a number, and so on ..
  • All implemented features should have relevant test cases
    • If I just have to run your test suite to check project quality and features : Automatic bonus
  • Bonus : Improve your app in any way you want : More features, fancy report, any good idea will be rewarded

About

SIGL 2024 Python Course


Languages

Language:Python 100.0%