GithubHelp home page GithubHelp logo

jamis / bucketwise Goto Github PK

View Code? Open in Web Editor NEW
457.0 457.0 82.0 1.22 MB

ATTENTION: This project is no longer being updated. If you're still interested, feel free to read on... "A web-based personal finance manager with a focus on non-OCD budgeting and avoiding credit card debt"

Home Page: http://wiki.github.com/jamis/bucketwise

License: Other

Ruby 84.24% JavaScript 15.76%

bucketwise's People

Contributors

cmaggard avatar edavis10 avatar gregbair avatar jamis avatar watkyn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bucketwise's Issues

Editing an event that has cleared

Once you've reconciled a statement, editing any event associated with that statement removes that event from the statement it was reconciled with, silently. This is because editing an event actually creates new line items, rather than trying to just update the existing line items.

Feature: Credit Card Limit

It would be nice to be able to enter your credit card limit, and have the amount showing on the dashboard be red if you have 15% remaining, orange if you have between 15% and 80% remaining, and if you have over 80% remaining, it would be green. Gives a nice indication of how much left on your card (cause credit cards are always going to be red otherwise :-P ). It should be fairly easy to do I think (edit the account model, add a field, and use a helper to get the color for the credit card amount.

Account reconciliation

Just a heads up, if you were wanting to implement something for BucketWise, please do not start working on account reconciliation. I'm working on it right now, and hope to have it done in a few days.

Feature: Schedules

Details

Everyone has payments that need to go out weekly, fortnightly etc. Schedules would work with these payments and in combination with buckets, to ensure they that amounts needed are met on time by indicating via green/orange/red current values for scheduled events, and to automatically create expenses that have occurred since your last login. The reverse where money is expected on a regular basis would in turn add deposits that occurred since your last login. This makes management of bills/automatic payments easier to keep track of. It would also be constructed so that if a expense/deposit is created, you'll get alerts on the dashboard to review the payments made, with the ability to delete that payment, amend etc.

Model Implementation

  • User has many schedules
  • Bucket has many actions, has many schedules through actions
  • Schedule model that belongs to account, has user through account, has many actions, has many buckets through actions. Has the fields:
    • id
    • account_id
    • name
    • scheduled_time
    • recurrence (in # weeks)
    • last_executed
  • Action model that belongs to schedule, belongs to bucket. Has the fields:
    • id
    • schedule_id
    • bucket_id
    • type (expense/deposit/transfer)
    • amount (in $)

Routes Implementation

  • /accounts/1/schedules
  • /accounts/1/schedules/new
  • /accounts/1/schedules/edit/5
  • /accounts/1/schedules/show/5
  • /accounts/1/schedules/destroy/5
  • /buckets/5/schedules

UI Implementation

  • Dashboard, Buckets show, and accounts show would get new widget "Upcoming Schedules" listing name and when. Clicking will take them to schedule show page, listing the actions that schedule has in details (what type, what bucket, how much) and showing how much in in there at present in the buckets it'll be taking action in. Depending on the pages visited, schedules will be constrained to that area (dash = all, account = only in account, bucket = only in bucket).
  • Dashboard would get new widget "Recent Alerts" listing events that took place since the last login, with links to each transaction that took place for review.
    • (you may know of a faster more efficient way to do this, but the idea is here)
    • When you login, schedules are checked against the current time, scheduled time, and the last executed time. Formula for finding schedules via SQL is something like WHERE (Time.now > schedule.scheduled_time AND schedule.scheduled_time > schedule.last_executed ) (essentially, run schedules that have occurred prior to now, but after the last execution).
    • The schedule is then executed (its actions are run, depositing/subtracting money from the baskets it's tied to). and the alerts model is then populated as needed in a before_filter so alerts are available on the next request
    • The schedule is then either deleted if it isn't needed again, or is updated with Time.now for the execution time, and scheduled_time becomes scheduled_time + recurrence.weeks (where recurrence is number weeks after the last scheduled_time that is should run again)
    • A query is run again to ensure no more schedules have taken place (incase user doesn't login for 2/3 weeks. Something like this
      • while Schedule.count(:conditions => "#{Time.now} > schedule.scheduled_time AND schedule.scheduled_time > schedule.last_executed") > 0
  • Any place where buckets are listed (account buckets, dashboard etc) get modified to include amounts of transactions coming within 7 days of today. The label will be colored according to time remaining and money available.
    • In the case that we have funds in that basket are met, the label is green
    • In the case that the funds in that basket are below required levels, and the next schedule is 2 or more days, the label is orange
    • In the case that the funds in that basket are below required levels, and the next schedule is within 2 days, the label is red
  • Schedule show/destroy don't need any specific stuff, however add will need the following:
    • The link to the page will be within an account page, next to 'Buckets in xxxxx' called 'Add Schedule in xxxxx' (along with view schedules in xxxxx)
    • The new schedule form will need the following fields
      • Account selection dropdown (default to current account)
      • Actions section similar to multiple buckets expenses/deposit where you can add extra buckets. Each line has a bucket dropdown for the current account, a type dropdown (expense/deposit/transfer) and an amount). These populate actions association
      • First payment section where it has year, months and day fields. This populates the scheduled time field on creation
      • Recurrence section where you select either "one time payment" (for future payment usage, this would make recurrence fields nil) or you select the occurrence. Weekly, fortnightly, monthly, or a text fields to specify number of weeks. That amount is stored in the schedules recurrence field and used as described in the section on how alerts are created.
  • Schedules should be able to be skipped. On the schedule show page, you should be able to "Skip the next occurrence", which would then make scheduled_time on the model == (scheduled_time + recurrence.weeks), effectively skipping it till next time.

Conclusion

I think think this feature would be quite useful. If you have any questions about its implementation, let me know.

Missing success16.png

Processing EventsController#create (for 127.0.0.1 at 2009-05-16 11:08:29) [POST]

[snip]

Processing ApplicationController#index (for 127.0.0.1 at 2009-05-16 11:08:30) [GET]

ActionController::RoutingError (No route matches "/images/success16.png" with {:method=>:get}):

Rendering rescues/layout (not_found)

Show all 6 buckets shows up when only 5 are visible

It looks like the "See all 6 buckets" link shows up on the bottom of my account but I only have 5 buckets when I click on "See all 6 buckets"

It looks like the Aside bucket is included in the count but it is not visible until it is used for the first time?

Feature: Currency Conversion

Won't go into as much detail as my last ticket. Basically, you manually enter (unless you can link an API which would be neat) the current conversion rates for different countries into a Conversion model, then whenever you hover over a price, you can select a currency and it'll process it and show you how much it is. This will be handy if you want to buy something online using a CC, and want to know how much $$ you have left in that account in another currency. This'll tie in with account options for if/when bucketwise supports euros and such (instead of just dollars).

Deleting an Account with a transfer on it will cause an error when editing the transfer

  1. Create Account A
  2. Create Account B
  3. Create a transfer from Account A to Account B
  4. Delete Account B
  5. Transfer still exists
  6. Edit Transfer
  7. Error

Version: 120e981

ActionView::TemplateError (You have a nil object when you didn't expect it!
The error occurred while evaluating nil.checking?) on line #8 of app/views/events/_form_section.html.haml:
5:     = account_prompt
6:     = select_account(section, accounts, selected_account && selected_account.id)
7:     - if section_wants_check_options?(section)
8:       %span{:id => "#{section}.check_options", :style => visible?(check_options_visible_for?(section))}
9:         == Check ##{form.text_field :check_number, :size => 6}
10:     - if section_wants_repayment_options?(section)
11:       %span.repayment_options{:id => "#{section}.repayment_options", :style => visible?(repayment_options_visible_for?(section))}

    app/helpers/events_helper.rb:200:in `check_options_visible_for?'
    app/views/events/_form_section.html.haml:8:in `_run_haml_app47views47events47_form_section46html46haml_locals_account_prompt_accounts_form_form_section_multi_bucket_prompt_object_section_selected_account_single_bucket_prompt_title'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:12:in `render'
    vendor/plugins/haml/rails/./lib/haml/helpers.rb:57:in `non_haml'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:12:in `render'
    app/helpers/events_helper.rb:313:in `render_event_form_section'
    app/views/events/_form.html.haml:25:in `_run_haml_app47views47events47_form46html46haml_locals_form_object'
    app/views/events/_form.html.haml:22:in `each'
    app/views/events/_form.html.haml:22:in `_run_haml_app47views47events47_form46html46haml_locals_form_object'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:165:in `call'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:165:in `form_for'
    vendor/plugins/haml/rails/./lib/haml/helpers.rb:447:in `call'
    vendor/plugins/haml/rails/./lib/haml/helpers.rb:447:in `haml_bind_proc'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:171:in `form_for'
    app/views/events/_form.html.haml:11:in `_run_haml_app47views47events47_form46html46haml_locals_form_object'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:12:in `render'
    vendor/plugins/haml/rails/./lib/haml/helpers.rb:57:in `non_haml'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:12:in `render'
    app/views/events/edit.html.haml:8:in `_run_haml_app47views47events47edit46html46haml'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:14:in `render'
    vendor/plugins/haml/rails/./lib/haml/helpers/action_view_mods.rb:14:in `render'
    vendor/plugins/haml/rails/./lib/sass/plugin/rails.rb:19:in `process'

Cannot remove line-items from bucket reallocation

While creating a new bucket reallocation transaction, if you click the "More buckets, please" link, the line item rows that are added do not have an 'x' link next to them (like the line item rows do in other transaction types).

Furthermore, if you save a reallocation transaction with "blank" line item rows, they get saved as line items with $0.00 amounts, instead of being ignored.

rails gem version mismatch?

the readme indicates that you need rails 2.3, but config/environment.rb has RAILS_GEM_VERSION = ‘2.0.2’

not a big deal, but thought you’d like to know

cap local externals:setup expects ~/.bucketwise/Capfile to exist

Here is the exception I get when running cap local external:setup

```
MacBook-Pro:bucketwise(master) kamal$ cap local externals:setup
/usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:183:in `find_file_in_load_path’: no such file to load — /Users/kamal/.bucketwise/Capfile (LoadError)
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:171:in `load_from_file’
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:89:in `load’
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:86:in `load’
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:86:in `each’
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:86:in `load’
from ./config/deploy.rb:5:in `load’
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:172:in `load_from_file’
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/configuration/loading.rb:89:in `load’
… 13 levels…
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/lib/capistrano/cli/execute.rb:14:in `execute’
from /usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.0/bin/cap:4
from /usr/local/bin/cap:19:in `load’
from /usr/local/bin/cap:19
```

Cannot edit a single-bucket deposit to be multi-bucket

This applies to deposits, at the least, and maybe other transaction types, too. If you create a deposit that puts money in a single bucket, and later try to edit it to be a split transaction, the "more than one" option in the bucket dropdown list is missing.

uninitialized constant CalendarDateSelect

I've tried to run the application on my local computer, but I'm receiving message: "uninitialized constant CalendarDateSelect". Didn't have time to investigate. Maybe you know how to fix this very quickly. Thanks

Error running cap local externals:setup - 'Readme.txt' would be overwritten by merge

$ cap local externals:setup

  * executing `local'
  * executing `externals:setup'
configuring vendor/plugins/haml
remote: Counting objects: 12496, done.
remote: Compressing objects: 100% (4100/4100), done.
remote: Total 12496 (delta 8371), reused 12235 (delta 8111)
configuring vendor/rails
remote: Counting objects: 106035, done.
remote: Compressing objects: 100% (23766/23766), done.
remote: Total 106035 (delta 82025), reused 104753 (delta 81038)
configuring vendor/plugins/calendar_date_select
remote: Counting objects: 1332, done.
remote: Compressing objects: 100% (640/640), done.
remote: Total 1332 (delta 772), reused 973 (delta 570)
error: Untracked working tree file 'Readme.txt' would be overwritten by merge.
vendor/plugins/cached_externals/recipes/cached_externals.rb:54:in `load': Error checking out 88b7caf7acecf31186661c0efd6bc606cdcc666d to /Users/jolma/depot/shared/externals/vendor/plugins/calendar_date_select/88b7caf7acecf31186661c0efd6bc606cdcc666d (RuntimeError)
    from vendor/plugins/cached_externals/recipes/cached_externals.rb:41:in `each'
    from vendor/plugins/cached_externals/recipes/cached_externals.rb:41:in `load'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `instance_eval'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `invoke_task_directly_without_callbacks'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/configuration/callbacks.rb:27:in `invoke_task_directly'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:81:in `execute_task'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:93:in `find_and_execute_task'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/cli/execute.rb:45:in `execute_requested_actions_without_help'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/cli/execute.rb:44:in `each'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/cli/execute.rb:44:in `execute_requested_actions_without_help'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/cli/help.rb:19:in `execute_requested_actions'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/cli/execute.rb:33:in `execute!'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/lib/capistrano/cli/execute.rb:14:in `execute'
    from /Users/jolma/.gem/ruby/1.8/gems/capistrano-2.5.5/bin/cap:4
    from /usr/bin/cap:19:in `load'
    from /usr/bin/cap:19

$ rails --version

Rails 2.3.2

$ ruby --version

ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9.6.0]

$ git --version

git version 1.5.5.1

$ cap --version

Capistrano v2.5.5

$ git log

commit 379777136d2f50563b2242439b640d881754b3cf
Author: Jamis Buck 
Date:   Mon May 25 22:04:55 2009 -0600

    update changelog

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.