Code Monkey home page Code Monkey logo

budget's Introduction

Categorise your expenses, allocate your incomes and build up your savings with envelopes.

Demo available at https://budget-demo.dubandubois.com

Status

Maintainability

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

  1. Download the code to an empty folder:
git clone https://github.com/simondubois/budget.git /var/www/budget
  1. Create the configuration file:
cd /var/www/budget && cp .env.example .env
  1. In the .env file, set APP_KEY:
 APP_KEY=a_random_string_with_many_symbols
  1. Install the dependencies:
composer install --optimize-autoloader --no-dev
  1. Insert one or more currency in the database (examples):
INSERT INTO `currencies` (`iso`, `name`, `unit`) VALUES ('USD', 'United States dollar', '$');
  1. In the .env file, set BUDGET_DEFAULT_CURRENCY to on the iso values you have just inserted:
BUDGET_DEFAULT_CURRENCY=USD
  1. Fetch currency rates for today (only required with multiple currencies):
php artisan rate:fetch
  1. 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
  1. 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:

  1. Insert currencies in the database (see step 5 of the deployment)
  2. Clear the cache with php artisan cache:clear.
  3. 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.

budget's People

Contributors

simondubois avatar

Stargazers

53ny4 avatar Arelthia Phillips avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.