A simple way to manage your finances with forecasting. We should automate our money, not make it automate us.
Clone or download
jonathan-irvin Merge pull request #62 from bidhan-a/master
fix markdown syntax in README
Latest commit 80bc5ad Oct 3, 2018

README.md

Jelly Fin

Discord Dependabot Status PRs Welcome contributions welcome Inline docs Build Status codecov


Finances are hard. It's one of the first adulting things everyone has to wrestle with. So, let's make it easy and automate it. Over the course of several years, my wife and I have tracked our finances using a forecasting method and had done it all within a spreadsheet. The time came where I wanted to take this concept and make it mobile using serverless architecture and clean design.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

For iOS Remember that you need to have Mac OS in order to develop for iOS

For Android

Setting up Firebase

For Android

  • Put your google-service.json file inside the android/app/ folder

For iOS

  • Open ios/JellyFin.xcworkspace in Xcode and right click on the folder JellyFin and "Add files to JellyFin"
  • Check "Copy items of needed" option
  • Select your GoogleService-Info.plist

Installing and Running

  1. Clone the repo.
  2. Run npm install to cover any dependencies.
  3. If are on a Mac OS: Enter npm run ios:install
  4. Enter npm start to start the server
  5. Open a new tab/terminal and run the project for the desired platform: npm run ios or npm run android

For Android

  • Accepting SDK Licenses:
    • Open Android SDK Manager - Make sure versions that need acceptance of licensing are installed and updated
    • Open a terminal and run sdkmanager --licenses
    • If exception is thrown for main thread when running the above command, navigate to $ANDROID_HOME/tools/bin open sdkmanager. Find DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"' and make it DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Performing a clean reinstall

  1. Run git pull to make sure your project directory is up to date.
    1. If you want to nuke everything and start over, you can delete the local repo and clone again.
  2. Run npm run clean to delete the node module & reinstall dependencies
    1. At this point, verify that you properly followed the steps in "Setting up Firebase" above
  3. If you are on mac OS, run npm run ios:install
  4. You should now be able to run using npm start and npm run ios or npm run android

Common Issues:

If installation isn't working for you, check the following:

  1. Your version of node (v 8.x.x) & npm(v 6.x.x): run node -v & npm -v.

Running the tests

After installing all prerequisites and dependencies, just run npm test

Dependencies

Dependency PRs are automagically opened using Dependabot. We want to make sure the app stays green by ensuring the build doesn't break when dependencies are bumped and each dependency is well tested to ensure stability.

Deployment

Handled by TravisCI. Checkout .travis.yml for configuration details. Current build status: Build Status

Built With

  • React Native
  • Firebase

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of all contributors who participated in this project.

License license

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details

Acknowledgments

  • Thanks to my wife for the idea, motivation, and support
  • Thanks to Ben Halpern for encouraging me to open source this

Why are we doing this?

The idea is to take what we know: the transactions that are predictable like mortgage and insurance and just keep track of them against the account balance. Then take transactions that aren't predictable and try to predict them using seasonality analytics. Does your electric bill go up in the summer? Let's predict what it would be and try and account for it.