Giter VIP home page Giter VIP logo

openbudget's Introduction

OpenBudget

An open source Zero Based Budgeting Application. This project has the following goals:

  • Provide an open source and cross-platform format for storing a personal budget and performing all calculations and actions related to managing a budget
  • Fully offline editing of a budget on multiple devices with a built-in synchronization mechanism
  • The user should decide where their data is stored, whether it's on their devices only or on a cloud provider of their preference

Build Status

master
Appveyor(Windows .NET Core 3.1) Build status
Travis CI (Linux .NET Core 3.1) Build Status

openbudget's People

Contributors

justintg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

openbudget's Issues

Roadmap

v0.1

Budget

  • Create Budget
  • Set Budget Currency
  • Set Budget Currency Number Format
  • Budget Currency Format is used in WPF Application

Accounts

  • Add an account w/ Initial Balance
  • Set Account Type
  • Set Budgeting Type (On-Budget/Off-Budget)
  • Can reconcile an account

Transactions

  • Add a transaction
  • Edit a transaction
  • Delete a transaction
  • Transaction can be a Transfer
  • Updating Amount of Transfer updates both sides of the Transfer
  • Transaction Category can be set
  • Split Transactions Supported(in view and edit mode)
  • Sub Transaction Transfer
  • Transaction state (cleared/uncleared)
  • Transaction validation is visible when transaction is in an error state

Categories

  • Can add a Category to a Master Category
  • Can add a MasterCategory to the budget
  • Can reorder MasterCategories and Categories
  • Can add/update a note on a Category
  • Can rename a Master Category
  • Can rename a Category

Budget View

  • Virtualized Budget View(all BudgetViewMonths "exist" but arent materialized until needed for display.
  • Can updated Budgeted amount on CategoryMonth which triggers a recalculation
  • Master Category summary row
  • Right arrow red(transfer category balance to next month) on CategoryMonth
  • Add/update a note on CategoryMonth
  • Budget Month header
  • Proper formatting/colors on BudgetView rows and month headers
  • Drag and Drop on BudgetView can scroll the view
  • Master Category Expander

Storage Format

  • Have a basic cross-platform SQLite storage format for the budget
  • Have an in-memory BudgetStore to be the reference implementation of IBudgetStore and for testing purposes
  • Standard EventStream serialization format
  • Implement IBudgetViewCache extension for SQLite budget store that does most of the calculation and grouping in SQL

v0.2

  • Transaction virtualization at data level(stream from the database rather than load an entire account into memory)
  • Configurable sort order on Transaction grid
  • Storage optimization - new VectorClock binary format
  • Storage optimization - Event data compression using a predetermined deflate dictionary
  • Implement event sorting for synchronization in SQLite
  • Optimize BudgetViewCalculator to do partial re-calculation rather than a full calculation when possible
  • File directory synchronization
  • YNAB4 Import

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.