Coder Social home page Coder Social logo

budget-analyzer's Introduction

Budget Analyzer

The budget analyzer is a Grails-based web application that uses jQuery Mobile to construct the UI. Its main purpose is to provide an estimated running balance in the future based on all available budgets, bills, deposits, payments, etc. While most budget systems provide the ability to show you how much you have spent on a particular budget, you never have a way of knowing based on the budget and bills I have, how much money will I have in 2 weeks, as an estimate. This application provides that capability by taking your current balance into account and reflecting upcoming transactions against it. This way you always know how much money you may or may not have at a given time in the future. This is especially useful when you want to purchase something but are not sure if you will have enough money to cover you until your next paycheck. With this application, you simply update your balance and check the associated date.

Downloading

#> git clone <url>

Setup

Before using this application, you must configure certain parts of it.

First, open grails-app/conf/BootStrap.groovy. If you want to pre-initialize your budget items, simply update this file following the samples given. Otherwise, simply remove those samples.

Second, open grails-app/conf/Config.groovy. Scroll down to the Grails mail service. One of the features of this application is the ability to automatically download your balance every hour from a service you provide/configure.
Along with downloading your balance, it will check automatically if at any point in the next 30 days your balance would fall below a $100 threshold. If that would occur, it automatically emails you. If you want the application to perform this and email you anytime the threshold is exceeded, simply setup the Grails mail service (see the Grails mail plugin for examples). Then, configure budget threshold settings below it to set the email addreses.

Third, open grails-app/conf/spring/resources.groovy. This is where you can configure or create your own service to download your current balance. By default, there are two loaders. The first is a remote loader that simply downloads a JSON file containing a balance node and a date node. This may be used if you can setup a remote system that downloads your balance. For example, I use Phantom JS on a remote system that logs into my bank, extracts the balance via jQuery, and writes a JSON file to my webserver. The second type of loader is an external remote loader that launches Phantom JS with a given script to download the balance. This expects Phantom JS to be running on the same system.

Running

#> grails run-app

Viewing

Simply open your browser to http://localhost:8080/budget-analyzer. This will open the overview controller by default. If you did not use the auto-download balance option, you can click on the balance to open a dialog allowing you to set the current balance.

More Information

For more information, see my Blog series:

http://www.znetdevelopment.com/blogs/2013/01/23/budget-analyzer-application-server-side-via-grails/ http://www.znetdevelopment.com/blogs/2013/01/24/budget-analyzer-application-client-side-via-jquery-mobile/

Screenshot

Screenshot

budget-analyzer's People

Watchers

Nicholas Hagen avatar  avatar

budget-analyzer's Issues

applicationContext.xml missing

I am playing around with your Grails app and get an error message that says that /WEB-INF/applicationContext.xml is missing. I am wondering whether you excluded to much from being checked into your repository.

I did not see the folder web-app/WEB-INF in your repo. If I am not mistaken, only parts of this folder should be excluded. You can generate a .gitignore that gives you pointers on what to exclude via

grails integrate-with --git

Here is the full stack I get:

context.ContextLoader Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

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.