Categorise your expenses, allocate your incomes and build up your savings with envelopes.
Demo available at https://budget-demo.dubandubois.com
Status
This application is now considered as stable. No more features are planned, but feel free to suggest some if you need. Documentation, feature, fix, UX, logo, translation... any help is welcome !
Features...
....for end users
- complete solution for a flexible envelope system.
- monhtly allocations to set spending limits.
- optimized operation list for both searching and doing the books.
- visual comparison between bank account balance and target savings.
- immediate feedback about global and individual envelope healths.
- monthly and yearly history.
- multi currency support with immediate conversion.
- daily currency rate update.
- monthly currency rate history chart.
- responsive design.
- multi language (currently supported: English, French).
...for administrator
- generic REST API so any client can communicate with the backend.
- possibility to use web cron if systen cron is not available.
- compiled frontend assets (no need to run node.js on the server).
- built on Laravel 6 and Vuejs 2.5.
Requirements
- a web server (tested with Apache).
- PHP >= 7.2.
- MySQL (tested with version 5.6 and 5.7).
- composer
Deployment
- Download the code to an empty folder:
git clone https://github.com/simondubois/budget.git /var/www/budget
- Create the configuration file:
cd /var/www/budget && cp .env.example .env
- In the
.env
file, setAPP_KEY
:
APP_KEY=a_random_string_with_many_symbols
- Install the dependencies:
composer install --optimize-autoloader --no-dev
- Insert one or more currency in the database (examples):
INSERT INTO `currencies` (`iso`, `name`, `unit`) VALUES ('USD', 'United States dollar', '$');
- In the
.env
file, setBUDGET_DEFAULT_CURRENCY
to on theiso
values you have just inserted:
BUDGET_DEFAULT_CURRENCY=USD
- Fetch currency rates for today (only required with multiple currencies):
php artisan rate:fetch
- Optional: for automatic daily rate update:
# Either add scheduled tasks to system cron:
* * * * * cd /var/www/budget && php artisan schedule:run >> /dev/null 2>&1
# Or setup a daily webcron towards the following URL (replacing `domain.example` with your own domain):
https://domain.example/fetch-rates
- Point the web server to
/var/www/budget/public
.
FAQ
How to add more currencies?
If you need additional currencies afterwards, you must follow these steps:
- Insert currencies in the database (see step 5 of the deployment)
- Clear the cache with
php artisan cache:clear
.- Fetch currency rates with
php artisan rate:fetch
.
What about authentication?
Authentication has not been implemented. The easiest would be to setup Basic access authentication at the server level.