Проект предназначен для учета пользователем своих ежедневных трат. В конечном счете, данный проект является средством отслеживания, на что тратятся средства (это может быть полезно, например, чтобы лучше планировать собственный бюджет).
Кошелек (Account) - условный контейнер, куда пользователь может складывать свои средства. Например, кошелек может соответствовать дебетовой карте, наличным средствам в кошельке или логической "полочке", например "на отпуск" или "подаренные мне на день рождения".
Кошелек может служить источником, откуда пользователь берет деньги, а также может служить получателем (в случае пополнения).
Транзакция - любая операция, связанная с деньгами. Данное приложение рассматривает два вида транзакций:
- внесение (deposit)
- трата (withdrawal)
Каждая транзакция, как минимум, имеет следующие атрибуты:
- дата совершения
- кошелек, с которым проводится операция
- сумма операции
- текстовое обоснование (reason), например "Купил себе лыжи"
- валюта, в которой совершена операция
Категория логически группирует транзакции по их смыслу (например, категории могут быть вида "Питание", "Спорт", "Подарки", "Здоровье" etc). Одна транзакция имеет не более одной категории. Каждый пользователь имеет свой словарь категорий. Категории могут впоследствии использованы для построения отчетов и фильтрации.
Опционально пользователь может помечать свои транзакции тэгами. Например, тэгами можно отметить те траты, которые были совершены в отпуске, с каким событием связана та или иная покупка и тд. Словарь тэгов у каждого пользователя свой. Одна транзакция имеет произвольное количество связанных с ней тэгов.