Okane

Okane - Expense Management Software

Okane is open source expense management software for individuals. It provides the ability to quickly and easily setup and track daily expenses.

It implements different authentication / authorization protocols (ex: OIDC, SAML) to provide Single Sign-On facility.

In addition, you can have multiple users for managing same accounts and provide different level of authorization based on roles.

Installation of Okane is really simple just download the zip from GitHub release page and extract it at desired location and run binary. Okane have binary releases for Linux, Mac & Windows.

It is build using Go & different web technologies including HTML, CSS, JavaScript. Okane is actively maintained, and we release quite frequently. You can check out live Demo.

Technical Specification

Let’s dive deeper into the technical sepcification of Okane. The application is developed with below mentioned tech stack where primary langauge is one of our favourites which is nothing but Golang

  • Front End - HTML, CSS, JavaScript
  • Back End - Golang
  • Database - MySQL

Even though it is a web application it provides self-host option only. Thus we provided an installation wizard to make user‘s life easy during the process. Keeping all this in mind we have selected monolethic architecture instead of microservice. Another reason of choosing monolethic over microservice, we want it simple, easy to understand and easy to install.

Now, you have knowledge about motivation behind developing this application and the tech stack used. It is time to walkthrough the entities involved in this application. We will elaborate some of the most important entities here. For the detailed description of each you can refer documentation at GitHub.

  1. Transaction

Here, transaction refers to the financial transaction that is whenever you create a transaction that means you are transferring your money from one place to another. There are different types of transactions available as mentioned below:

  • Income - It means the transaction adds money to your account
  • Expense - It means the transaction subtract money from your account
  • Transfer - It means the transaction transfer money from one account to another and both accounts belong to you
  1. Account

Account is same as your bank account the only difference is you can create sub-account under a primary account. The nested account is not permitted that means you cannot create sub-account under another sub-account.

  1. Budget

It is nothing but your calculation plan for your finance for a defined period. You can define budget for a month, quarter or year. Budget is not mandatory for transactions and you can make tranasaction on any account without having pre-existing budget but it would be great to have budget precreated to keep your savings, investments, and expenses on track.

  1. User

It is end user of application who can create accounts, transactions, and define budget at different interval of time. The user is someone wants to use Okane for managing their personal finance and budget. User can add other users to manage same accounts depending on the roles newly created user will get authorization on accounts.

Mainly, there are three roles:

  1. Super Admin User

This user has all the rights including view and modify of application settings. It can view the profile of another user as well as modify their profiles if required. However, it is intended to be used to modify system settings and in an initial state of application when there are no other users. Another use of this role is to create another Super Administrator.

We have provided this pre-created user for user ease so that the user does not need to follow the registration process if there is only one user and they can directly log into the system with the default username admin and pre-generated password which user will get at the time of installation.

Some of you guys may have questions about this pre-created Super Admin user that we have developed a web application even though we are providing self-host only it is still a web application. So why do we need this pre-created user functionality the answer is it is not necessary to have that in this way. You can consider it as a requirement for this application to have a pre-created super admin user.

  1. Administrator User

As the name implies it is admin user who has most of the rights apart from modifying the system settings. It can view and modify the rest of the things including other user’s profiles. This user is mainly intended to perform administration tasks such as maintaining assets inventory, managing users etc.

Even though this user has most of the administrative level permission it still cannot create a Super Admin User that can be done by another Super Administrator only.

  1. Standard User

As you may have seen in most of the applications standard user has minimum rights, it can neither view other users nor modify them. It can modify limited settings in its profile and for the reset of the things it needs to contact to administrator user.

Security Overview

Other than business entities security mechanism of any application is something that interests me a lot, and this security mechanism has an answer to the question How an application is providing authentication & authorization for its users? That means an application can use different kinds of protocols available for this purpose. Apart from this, it also provides insights into How an application prevents common security attacks.

For this application, we provided below ways for SSO (Single SignOn):

  • Basic Authentication
  • SSO with Google, Okta, Azure and GitHub

In addition, to Single Sign On feature, our application implemented other features to prevent common attacks.

  • Two-Factor Authentication with Okta Verify
  • One way secure password with bcrypt encryption
  • SQL injection prevention
  • Configurable setting to prevent common passwords
  • Configurable setting to enforce password requirement
  • Brute force prevention on login attempts
  • CSRF Protection through form tokens
  • Enforce Content Security Policy (CSP)
  • RBAC implementation to restrict access
  • Encrypt fields with AES-256 encryption

Source Code

For the time being, we have not provided the source code for this application because some of its modules are still under development. We will provide a GitHub link for source code and complete documentation whenever it is ready to share.

Once the source code is completed an official website will be launched for complete documentation. We also planned to launch a demo application where you can have a look at each feature without hosting it on your server.

Screen Shots

Eventhough, it is not possible to include screen shots for all of the application screens. We have included screenshots for some of the most important screens.

You can take a look at application’s look and feel below:

Okane - Dashboard

Okane - Dashboard

Okane - Budget

Okane - Budget

Okane - Transactions

Okane - Transactions

Okane - New Transaction

Okane - New Transaction

Okane - Notification Settings

Okane - Notification Settings

Okane - Security Settings

Okane - Security Settings

Okane - Backup

Okane - Backup

Still Need Help?

Don't worry if you are still facing any issues with Okane - Expense Management System. We are here to help you out. You can contact us at [[email protected]](mailto:[email protected])

If you do not feel comfortable with email support we have an official Facebook Group that you can join and share your queries.