Here is a presentation of the wealth management app I have developed.

At the end of the article I explain the chosen software development tools.

Balance sheet recording in the wealth management app

You can create a new balance in the application, for example once a month. The balance sheet records the balances of the accounts on a given day.

In the list view, you can see your total assets as both gross and net. The difference is that the net amount excludes any taxes you would have to pay if you decided to sell everything and move to Thailand to become a yoga teacher.

List of balance sheets in the wealth management app.
List of balance sheets in the wealth management app.

Clicking on the balance sheet allows you to edit the amounts of money and enter comments. For each account, the difference with the previous balance sheet is shown.

Editing an individual balance sheet in the wealth management application.
Editing an individual balance sheet in the wealth management application.

Account management in the wealth management app

The accounts displayed in the balance sheets are managed from a dedicated list view.

List of accounts in the wealth management application.
List of accounts in the wealth management application.

The dashboard requires that the account is categorized. The tax rate on the sale of assets can be entered if desired. The historical trend and future forecast of the account balance can be seen in the attached graph.

View and edit details of the selected account.
View and edit details of the selected account.

I grouped my asset types into a few categories:

Asset CategoryExamplesExamples
CashWallet, bank account
Short-termCredit card debt, loan to a friend
Long-termApartment, forest
Real estateCottage, property you don’t intend to sell
Investment capitalInitial investment in ETF
Investment incomeValue increase in ETF
LoanHouse loan, student loan

The determinant of the asset class is how quickly it can or should be converted into cash and the tax consequences of the sale.

Predictions in the wealth management app

Since the balance sheet only shows the past, systematic asset management also requires forecasts.

The forecasts are grouped together to give a more complete picture.

A forecast can be set to recur, for example once a month. The refresh icon indicates the remaining repetitions.

The scale icon shows the impact on total wealth over the next year.

Forecasts are an important part of planning your finances.
Forecasts are an important part of planning your finances.

A function is defined for the forecasts, which is executed on the selected date. A dedicated function can be found for adding or subtracting an amount of money from an account, transferring from one account to another, repaying a loan, investment return and changing the balance by a multiplier.

Forecast editing view in the wealth management application.
Forecast editing view in the wealth management application.

Analytics in the wealth management app

The goal of data entry is to provide useful analytics to make better financial decisions.

The most interesting chart in the dashboard is probably the trend of total wealth. Another important graph is the cash forecast.

The end result of entering data about your wealth is to see analytics on dashboard.
The end result of entering data about your wealth is to see analytics on dashboard.

Tools used in software development

I used my standard toolkit to develop the application.

The user interface and the backend come from the same server using the FastAPI framework. The code is therefore Python.

The user management is a logically separate entity.

The user interface is HTML and Javascript. Individual components are made in React. I developed simple Javascript functions that allow the application to run as a single page app. This enables the user to navigate faster between views and the developer to better control the app state.

Wealth management app in the cloud

The application runs from a Docker container from a single port. The UI and backend can be found in different url addresses, eg /app and /api.

I use three different environments:

  • Laptop for development
  • Test environment in the cloud
  • Production environment in the cloud

After each step, you can apply the database migrations and test suite manually from your own machine. The whole process is therefore not fully automated.

In Google Cloud, the Docker container is hosted on the Google Cloud Run service.

Web application database

The database is PostgreSQL. In my opinion, SQL databases make application development more systematic, even if scalability suffers. Although problems would only arise with really large number of users.

In the development environment, the database is in a separate Docker container. This way the dev database works even offline. In the test and production environment, the application is connected to the Google Cloud SQL database instance.

The application is designed to be multi tenant. My first approach was to create a separate database for each user.

This proved to be unfeasible when the database required migrations. Each user’s database had to be updated separately.

I eventually moved to a model where the application has only one common database for all users. One column contains information about who each entry belongs to. Although this implementation requires more program logic, it seems to be a much more straightforward option overall.

For customers requiring extreme security, it would still be possible to create their own database servers at a reasonable effort.

The Alembic library is used to manage database migrations.

Costs of the wealth management application

Costs come mainly from the database, about 10 euros per month. As the application is currently only for my personal use, the same database works for other hobby projects.

Google Cloud Run is almost free for low amounts of traffic.