dhulme / money-manager

Desktop application for managing your personal finances
https://dhulme.uk/money-manager
MIT License
16 stars 4 forks source link
electron finance money money-manager vue

⚠️ V2 is currently in progress, see 2.0.0 branch. This will include major dependency updates to Vue 3, TypeScript and more.

Money Manager

Money Manager is a desktop application for managing your personal finances and accounts.

It uses Electron as the application platform and Vue.js as the Front-End UI framework.

πŸ’²πŸ€‘ Be in control of your finances with Money Manager! πŸ§πŸ‘›

Installation

Download the latest release here and run the setup program.

Features

πŸ’³ Keep track of transactions to and from your bank accounts and credit cards
πŸ’° Assign money from your accounts to different budgets
πŸ’Ή Get insights and analyse your spending and balances over time
πŸ“… Create bulk transactions that happen regularly, like paying bills or being paid your salary
πŸ“€ Export your accounts and transactions as CSV
πŸ–ŠοΈ Highlight important transactions
πŸ•’ Monthly backups made of your data
🏦 Import transactions from your bank statements (several common formats supported)
🌍 Change the currency and date format to match your region
πŸ’Ύ All your data is stored locally and never sent over the internet

Getting Started

Accounts are labelled pots of money. An account can be an asset or a budget. Assets represent real world accounts, like a bank account, credit card, or gift card. Budgets are virtual pots to help manage your real world accounts, like a budget for food or money you are owed by friends. Budgets help you keep track of your money, so rather than looking at your bank account and having no idea what money is for food, health, entertainment or savings, you're able to allocate this money to different budgets.

The process is loosely based on double-entry bookkeeping. When money in an asset (real-world account) goes in or out, you must assign that change to a budget. You do this by adding a transaction. Transactions can be between an asset and a budget, or between assets, or between budgets. For example, you go to a supermarket and buy some bananas with your credit card. You would add a transaction going out of your credit card account, and put the destination account as your food budget.

In a normal double-entry bookkeeping system, you would need to enter one entry on your credit card account and another on your food budget. Money Manager makes this process easier, you only need to enter the transaction one way, and it will create the opposite transaction on the other account. If you want to do complex transactions, you can use the special 'None' account, which allows you enter the opposite transaction manually. Any time you do this, a warning will appear within Money Manager that your assets and budgets do not match.

For transactions that happen regularly, such as assigning money from a salary to other budgets, you can use Bulk Transactions. Once you've been using Money Manager for some time, you'll be able to visualise your transaction data on the the Insights page. This can be useful in helping you decide on any changes to your budgeting. For example, you might not notice there is always money left in your food account at the end of each month, so you could adjust your bulk transaction to transfer less money from your salary to food account.

Screenshots

Accounts

Accounts

Adding a Transaction

Account

Insights

Insights

Development Setup

Uses Electron Vue to integrate Vue with Electron and handle build process.

# install dependencies
npm install

# dev server with hot reload at localhost:8080
npm run dev

# build packaged distribution with electron builder
npm run build

# build unpackaged distribution with electron builder
npm run build:dir

Licence

MIT

Data Structure

Each 'project' in Money Manager is stored in a single JSON file. Local backups of your project file are made automatically each month. The most recent project file will open automatically when you start Money Manager.

Account Category

{
  id: String, // human readable
  name: String,
  type: String // one of 'asset', 'budget'
}

Account

{
  balance: String,
  category: String, // account category ID
  id: String, // human readable
  name: String,
  transactionIds: [String...],
  type: String // one of 'asset', 'budget' or 'none',
  deleted: Boolean,
  importTransactionsFormatId: String
}

Transaction

{
  date: String,
  description: String,
  expense: String, // account ID for nicer visual display of dual transactions
  from: String, // account ID
  to: String, // account ID
  note: String,
  value: String,
  highlighted: Boolean,
  linkedTransaction?: String // for dual transactions, so they can be edited as one
}

Summary

{
  balance: String
}

Bulk Transaction

{
  description: String,
  id: String, // human readable
  name: String,
  transactionIds: [String...],
  lastModified: Date
}

Bulk Transaction Transaction

{
  from: String, // account ID
  to: String, // account ID
  note: String,
  value: String
}

Settings

Money Manager settings are stored in a JSON file your Windows user profile folder.

{
  projectPath: String,
  lastBackupDates: Object, // one key per project
  currencyPrefix: String,
  dateFormat: String
}

Import Formats

Money Manager Bulk Transactions

Custom TSV (tab separated values) format used for importing bulk transactions.

Example:

From    To  Note    Amount
Salary  Mortgage         Β£1.00
Salary  Food         Β£1.00

Midata Transactions

A UK standard for financial data.

Capital One Transactions

Used by Capital One UK.

Santander Transactions

Used by Satander UK.

Lloyds Transactions

Used by Lloyds Bank.