htmfilho / minimily Goto Github PK
View Code? Open in Web Editor NEWUse Minimily to organize your minimalist life.
Home Page: https://www.hildeberto.com/minimily/
License: GNU General Public License v3.0
Use Minimily to organize your minimalist life.
Home Page: https://www.hildeberto.com/minimily/
License: GNU General Public License v3.0
Sub-account is the possibility of subdividing an account in several smaller accounts for better budget planning.
When an account has sub-accounts:
Allow the user, after authenticated, to change her personal data.
The limit of credit of a category is the minimal amount of money its transactions can register in a given period of time. The limit of debit is the maximum amount of money its transactions can register in a given period of time. They are stored in the same field, but the meaning changes according to the type of category (debit or credit).
The limit of the category is compared with the sum of its registered transactions:
Changes of the limit amount are conserved historically according to its period of time. For example, if the limit is annual and it was defined for 2018 then any change for 2019 are saved as a separated record and it doesn't replace the value defined for 2018, preserving it indefinitely. If the limit didn't change from a period to another, then the most recent limit is considered.
A different limit can be defined per currency in use. For example, if all accounts are configured in Canadian dollars only, then the limits can only be defined in Canadian dollars. If at least one account is configured in a different currency, like American dollars, then the limits can be defined for Canadian dollars and American dollars separately.
From anywhere in the application, the user should be able to navigate between the top functionalities through the top menu.
Allow defining the date of the transaction or transfer for a day in the past. The user may want to create the transaction afterwards if they don't have time. The user may want to save all the receipts and type it into the system once a week.
In case there is a leak of passwords, implement a feature to:
Avoid showing technical terms in error messages when the application is in production. Register errors in the log instead.
Associate transfers via transaction ids, instead of account id. So, when deleting a transfer transaction, make sure the other transaction is also delete.
I input a new transaction with a comma in the Amount (e.g. 157,11) and I get the error:
HTTP ERROR: 500 Problem accessing /accounts/10/transactions/add. Reason: java.lang.NumberFormatException
Transactions are registered but sometimes the entire amount or part of it is returned to the other party. Support this event in the application gives more meaning to the transactions, improving traceability.
To solve this problem, we need to change the transaction table adapting existing columns and adding extra ones, but being careful to keep the data consistent. The current table structure solves a similar problem, the transfer of money between accounts, but the existing column is very specific to transfer. It can be redesigned to be more generic.
Create columns:
linked_transaction
(foreign key to transaction)link_type
[TRANSFER
, REFUND
]Migrate existing data:
account_transfer
not null, order by amount
and date_transaction
. Related transfer transactions will be grouped in pairs.linked_transaction
.link_type
of these transactions to TRANSFER
account_transfer
from the table transaction
My bank only shows me a bunch of log data about the transactions in my account. It doesn't help me to make decisions about my expenses, savings and investments. I need some sort of analysis of these data to see what is hidden behind the numbers.
Fortunately, my bank offers an online service to export my transactions in a csv
format. This issue intends to develop the algorithm to read and import this specific file and the user interface to upload the file.
A csv file is imported. Then a second attempt to import the same file may not insert duplicated data in the database. An algorithm must be written to make sure that the database doesn't have duplicities.
Add a button in the good's page to sell the good for a given price and register the amount as a credit transaction in an account.
The categories are hierarchically organized to qualify and organize transactions into meaningful topics. New and existing transactions can be optionally classified under one category per transaction. The transaction record shows its category and the category record shows all related transactions organized by accounts.
The Total Income is the sum of all credit transactions in all accounts of the user, or the family, during a period of time.
To calculate the total income, the function requires the family and the period of time. For each member of the family, get the list of accounts. For each account, get the list of credit transactions that are not originated from a transfer. return the sum of the amounts.
In the edition of a document, allow changing the folder to any of the existing folders and move the document in the storage as well.
As a user, I want to see some visual notification after I click on "Save and New" in the transaction form, indicating that the previous transaction was successfully saved.
Allow the user to change her password.
The 404 code is shown in a non-standard page.
Some operations should be automated to save user's time. For that, we need to integrate a scheduler to run code at a certain date and time.
Allow the user to create a family and make her data available for all or part of the family.
Standing instructions are rules to automatically generate transactions according to recurring payments and receivables. This ways, most of the work of recording transactions is actually automatically done by the application, reducing the effort of the user.
Depends on #23
Given:
we can calculate the next payment date. When the previous payment date is not informed then the next payment day is the same as the start date. The next payment date is between the start date or the previous payment date and the stop date. If the calculated next payment date falls in the weekend or in a holiday then it is recalculated to the next working day.
The following table shows how the frequency is used in the calculation of the next payment date.
Frequency | Block | Day | Example |
---|---|---|---|
Annually | 1 to 12 (month) | 1 to 31 (day) | 04 / 15 (Every year on April 15th) |
Semi-Annually | 1 to 6 (month) | 1 to 31 (day) | 3 / 20 (March 20th and September 20th) |
Three-Annually | 1 to 4 (month) | 1 to 31 (day) | 2 / 12 (February 12th, June 12th, and October 12th) |
Quarterly | 1 to 3 (month) | 1 to 31 (day) | 1 / 31 (January 31th, April 30th, July 31th, and October 31th) |
Bi-Monthly | 1 to 2 (month) | 1 to 31 (day) | 2 / 30 (February 28th, April 30th, June 30th, August 30th, October 30th, and December 30th) |
Monthly | 1 (month) | 1 to 31 (day) | 1 / 5 (January 5th, and so on) |
Semi-Monthly | 1 to 15 (day) | 16 to 31 (day) | 1 / 16 (January 1st, January 16th, February 1st, February 16th, etc) |
Bi-Weekly | 1 to 2 (week) | 1 to 7 (day of the week) | 2 / 3 (January 1st, January 15th, January 29th, etc) |
Weekly | 1 (week) | 1 to 7 (day of the week) | 1 / 5 (Every Thursday) |
We already mentioned the case when the next payment date falls in a weekend or in a holiday. An extra special case is when the day of the month is not valid for some of the months, like February 30th or June 31th.
Based on the history of transactions, which represents the spending habits of a user/family, predict for how long the money available can support the consumption pattern. The output should be the number of days left until running out of money.
The algorithm should ignore user's income transactions in all predictions, so it always considers the worse case scenario, which is when all incomes stop suddenly.
It is also important to consider seasonality because we spend more in some months and less in others. For example: we may spend more in August with school supplies and less in September when the routine gets back to normal. More in December because of Christmas and less in January. Etc.
Give additional ways to add goods instead of relying only on the Goods section. After the addition, the navigation should direct the user back to the collection or the location.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.