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.
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.
Account management in the wealth management app
The accounts displayed in the balance sheets are managed from a dedicated list view.
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.
I grouped my asset types into a few categories:
Asset Category | Examples | Examples |
---|---|---|
Cash | Wallet, bank account | |
Short-term | Credit card debt, loan to a friend | |
Long-term | Apartment, forest | |
Real estate | Cottage, property you don’t intend to sell | |
Investment capital | Initial investment in ETF | |
Investment income | Value increase in ETF | |
Loan | House 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.
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.
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.
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.
Write a new comment
The name will be visible. Email will not be published. More about privacy.