Table of Contents
guitos is a simple budgeting app that helps you figure out where your money went and plan your budget ahead of time.
It stores data in your browser's local storage (IndexedDB). Your private financial data doesn't leave your browser.
guitos was initially created to replace a spreadsheet and as an opportunity to learn React.
guitos is portuguese slang for money/cash.
- Any modern browser with javascript enabled.
It's not necessary to install anything in order to use this app.
However, if you'd like to use it offline, follow the instructions for your device on: web.dev
- Visit guitos.app
- Create a new budget and name it according to your preferred budget period
- ideally in one of the following formats:
YYYY-MM
orYYYY-WN
- ideally in one of the following formats:
- Input your revenue for the respective period (salary, sales, etc.)
- Fill in the expenses (groceries, electricity, etc.)
- Change the savings goal to your preference
- Update the reserves field with the current value of your emergency fund / cash
- Visit guitos.app
- Import data from single/multiple CSV files or a single JSON file. Make sure they follow the required structure:
Keyboard shortcuts can be triggered when no input field is selected.
Action | Shortcut |
---|---|
Clone current budget | C |
Create new budget | A |
Export data | S |
Go to older budget | PageDown |
Go to newer budget | PageUp |
type,name,value
expense,rent,1000.00
expense,food,200.00
income,salary,2000.00
income,sale,100
goal,goal,10
reserves,reserves,0
-
Note that the name of the CSV file is parsed as the name of the budget:
2023-04.csv results in a budget with the name of "2023-04".
[
{
"id": "035c2de4-00a4-403c-8f0e-f81339be9a4e",
"name": "2023-03",
"expenses": {
"items": [{ "id": 1, "name": "expense1", "value": 10 }],
"total": 10
},
"incomes": {
"items": [{ "id": 2, "name": "income1", "value": 100 }],
"total": 100
},
"stats": {
"available": 0,
"withGoal": 0,
"saved": 0,
"goal": "10",
"reserves": "0"
}
}
]
- Note that the ID of each budget inside the JSON file should be a v4 UUID as created by the
crypto.randomUUID()
method.
- React
- Bootstrap
- React Bootstrap
- React Bootstrap Typeahead
- React Icons
- React Router
- React Currency Input Field
- Dinero.js
- localForage
- PapaParse
- Vite
- Typescript
- Dracula
- Dracula.min Light
See the open issues for a list of proposed features (and known issues).
Reach out to the maintainer at one of the following places:
- GitHub issues
- Contact options listed on this GitHub profile
If you want to say thank you or/and support active development of guitos:
- Add a GitHub Star to the project.
- Write interesting articles about the project on your personal blog.
Together, we can make guitos better!
First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
Please read our contribution guidelines, and thank you for being involved!
The original setup of this repository is by Nuno.
For a full list of all authors and contributors, see the contributors page.
guitos follows good practices of security, but 100% security cannot be assured. guitos is provided "as is" without any warranty. Use at your own risk.
For more information and to report security issues, please refer to our security documentation.
This project is licensed under the GNU Affero General Public License v3.
See LICENSE for more information.