Service | Status |
---|---|
GitHub | |
Code Climate | |
Code Climate | |
Snyk (npm) | |
Snyk (Gemfile) |
Loot is a web-based personal finance management application. Its main goal is to reproduce the core functionality of Microsoft Money 2008, for the web.
Rails on the backend (JSON API); Angular.js + Bootstrap on the frontend
git clone git://github.com/scottohara/loot.git
) and switch to it (cd loot
)bundle config --local path vendor/bundle && bundle install
) (path vendor/bundle
ensures that gems are installed locally in the project)npm install
) (Note: you should have ./node_modules/.bin
in your shell path; so that locally installed packages are preferred over globally installed ones)rake db:setup
, or if you have no data to import rake db:create && rake db:migrate
)export LOOT_USERNAME=user && export LOOT_PASSWORD=pass
)npm start
)To get data out of MS Money and into Loot, I'm using the excellent Sunriise project to access the underlying data from my *.mny file, and export it as a set of CSV files.
rake db:seed
)(Note: this import tool has been tested using my MS Money file only. YMMV.)
npm run build
Frontend specs are implemented using mocha+chai+sinon.
Two npm scripts are available to run the frontend test suite:
npm run test:bdd
watches for any file changes and runs the full test suite (without code coverage)npm run test:coverage
performs a single full test suite run, including instanbul code coverage reporting. Summary coverage reports are written to stdout, and detailed HTML reports are available in /loot/coverage/index.html
Backend specs are implemented using RSpec:
npm run db
)bundle exec rake spec
). To run specific specs, use RSpec filtering (fdescribe
, fit
, xdescribe
, xit
)Integration tests are implemented using Cypress:
npm run test:e2e
)cypress run --browser chrome
)Frontend checks are implemented using eslint:
npm run lint
Backend checks are implemented using rubocop:
bundle exec rubocop
Before deploying, you should first create an annotated tag (e.g. git tag -am "Version 1.00" v1.00
).
Then run:
npm run deploy:staging
to deploy to the staging appnpm run deploy:production
to deploy to the production app