Version 0.9.20, maintenance refresh 2026-10 (library updates and security fixes, see [RELEASE-NOTES.md](RELEASE-NOTES.md) and [SECURITY-NOTES.md](SECURITY-NOTES.md)). FinCore is a cool and free cross-platform personal finances manager written in .NET 10 with Angular 14 frontend.
This repository is the legacy FinCore, kept as a demo. Active development continues in the new FinCore product.
This project is a summary of my experience working as a developer and team leader for various financial institutions (banks and FOREX brokers) and individual traders. I made application as simple as possible to use with such complex thing as finances.
Program fits for anybody.
- For merchant/consumer
If one lazy to take risks on trading and investing then can stick to Wallets book and Realtime exchange rates
In this case one can control and observe his wallets state in different currencies with current exchange rates and track performance here Earning/Spending Performance per day/month. - For trader
If one wants to remove emotions and use risk restriction and analyze trading statistics then these screens Trading Statistics and Risk management and Realtime Dashboard might help to evolve into profitable trader.
This will help to make trading less emotional and will help to create trading strategy and find favourite and most profitable instruments. - For Investor
If one wants to track investment portfolio and observe shares/stock prices then these screens will help Realtime Dashboard and Investments Pie and Yearly Capital State.
Using this app one can grow in all 3 directions - on constant usage one can become better and smart consumer/merchant, then better trader and finally wise investor. These screens will show and track in time your performance and personal relations with finances Yearly Capital State and Earning/Spending Performance per day/month.
This version is free of charge but if you want a better and secured version you can write me to hi@sergego.com we can talk about improving/installation/support and agree about $.
- Node.js 18 (see
FinCore/ClientApp/.nvmrc; Angular 14 does not run on Node 20+) - .NET 10 SDK (pinned in
global.json) - Docker (optional, for the quick start below)
- Optional: Metatrader 5 terminal, MySQL Server 5+, .NET Framework 4.8 (for the dlls used inside Metatrader 5)
| Component | Version |
|---|---|
| .NET (FinCore, BusinessLogic, BusinessObjects) | net10.0, ASP.NET Core / Microsoft.Extensions / Microsoft.Data.Sqlite 10.0.13 |
| NHibernate / FluentNHibernate | 5.7.0 / 3.5.0 |
| log4net | 3.5.0 |
| Autofac / Quartz / MySql.Data | 8.4.0 / 3.22.6 / 8.4.0 |
| Object mapping | hand-written BusinessLogic/EntityMapper.cs (AutoMapper removed) |
| Angular / Angular CLI | 14.3.0 / 14.2.13 |
| CoreUI Angular | 2.14.1 |
| DevExtreme | 23.2.15 |
| TypeScript / RxJS / zone.js | 4.8.4 / 7.8.2 / 0.11.8 |
| Lint | ESLint 8 + angular-eslint 14 (npm run lint) |
Known open security alerts and why they are not exploitable here are listed in SECURITY-NOTES.md.
git clone https://github.com/sergiovision/FinCore.git
cd FinCore
scripts/docker.sh # same as: docker compose build
docker compose up
Then open http://localhost:2020/#/login (default login below). Websockets use port 2021.
All helper scripts live in /scripts and can be run from any folder:
| Script | What it does |
|---|---|
scripts/restore.sh / scripts/restore.bat |
Restores NuGet packages and runs npm ci for the client |
scripts/build.sh / scripts/build.bat |
Builds the Angular client and publishes the server into ./bin (Windows Service / console app) |
scripts/test.sh |
Same checks as CI: client lint, build and npm audit --audit-level=critical; server build and unit tests |
scripts/run.sh |
Runs the server locally on http://localhost:2020 (build the client first) |
scripts/docker.sh |
Builds the docker image (docker compose build) |
- Clone this repository.
- Build the client app:
For UI debugging run
cd FinCore/ClientApp nvm use # Node 18 npm ci npm run lint npm run buildnpm run startand open http://127.0.0.1:4200. - Build and test the server:
Or run
dotnet build FinCore.sln -c Release dotnet test FinCore.sln -c Releasescripts/build.sh(scripts\build.baton Windows) to build everything and publish into./bin. - Debug locally (JetBrains Rider / Visual Studio): use the
FinCorelaunch profile. It runs from the repobin/folder (workingDirectory: ../bininFinCore/Properties/launchSettings.json). InDevelopmentthe server proxies the UI to the Angular dev server, so also runnpm run startinFinCore/ClientApp, then open http://localhost:2020.
SQLite database located in /DB folder. By default SQLite DB file used, but MySQL also supported, you can switch to MySQL in /FinCore/appSettings.json file.
For configuring crypto module setup Api Keys for KuCoin:
For KuCoin exchange set the following properties in /FinCore/appSettings.json:
KuCoinAPIKey - KuCoin Main API Key
KuCoinAPISecret - API Secret
KuCoinPassPhrase - Pass Phrase
KuCoinFutureAPIKey - KuCoin Futures API Key
KuCoinFutureAPISecret - API Secret
KuCoinFuturePassPhrase - Futures Pass Phrase
Open fincore_empty.sqlite file in any DB editor that works with SQLite ( like Navicat ).
Open Settings screen and set the following variables
XTrade.TerminalUser - should be set to windows user login name where trading terminals will be running
XTrade.InstallDir - XTrade installation folder.
Metatrader.CommonFiles - path to MT5 common files folder
MQL.Sources - path to MQL folder where your MQL robots stored
To install application in Windows Service mode, build project under Windows, go to bin folder and run command (under Administrator privileges): FinCore.exe install
If you have problems running check FinCore.MainServer.log to see errors.
FinCore folders structure:
/BusinessLogic - main app logic
/BusinessObjects - shared business objects
/FinCore - main server self host and WebAPI controllers
/ClientApp - Angular client application
/MQL5 - MQL5 executables that needs to be installed in Metatrader to be able to synchronize and work with Metatrader.
- FinCore Features
- Installation
Multiple Terminals/Brokers and Advisers Management
Trading Statistics and Risk management
Earning/Spending Performance per day/month
There are 3 options to run FinCore application:
- As a Windows Service
- As an usual console application
- As a Docker image in a Docker container
When application started it becomes accessible by this link: http://localhost:2020/#/login or http://localhost:2020/#/dashboard
Websockets port uses port 2021.
Make sure ports 2020 and 2021 are opened to make FinCore accesible outside of VPS.
If you run application in docker on a separate address to connect it to Windows where Metatrader terminals live - you should activate ports forwarding in Windows:
Run this command in windows command line:
netsh interface portproxy add v4tov4 listenport=2020 listenaddress=127.0.0.1 connectport=2020 connectaddress='docker container address'
netsh interface portproxy add v4tov4 listenport=2022 listenaddress=127.0.0.1 connectport=2022 connectaddress='docker container address'
After that all experts in Metatrader will use be able to synchronize with FinCore app running in Docker or on another machine/OS.
To expose Fincore application through NGINX webserver add the following text in nginx.conf file under server { } section : `location ^~ /fincore/ {
proxy_pass http://127.0.0.1:2020/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}`
Default login for fincore_empty file is:
mail: test@test.com
password: test
Wallets book
Realtime Dashboard
Dashboard shows current positions and investments performance in realtime. Used high performance websocket driven engine to update instruments in realtime.Mobile friendly and no need to login to your VPS and focus in terminal apps to see all positions. This is very convenient to have an eye on your assets and trading anytime.
Settings
Adding Adviser in Metatrader
To add Adviser on a chart just right click and selet Objective template. FinCore will make all the rest.But before adding template make sure you have added this symbol into Metasymbols management screen.
Metatrader Settings
Expert Adviser interacts with app server through WebAPI.To make Objective Expert Adviser work you need to set the following settings in Metatrader settings:
Adviser
Adviser has a panel in top left corner of the chart. Adviser settings can be edited on this screen Advisers ManagementMultiple Terminals/Brokers and Advisers Management
Yearly Capital State
Summary Capital state through the yearTrading Statistics and Risk management
Useful screen for trader/investor. Here you can see which instruments perform better and select favourite ones for your next trade/investment.Investments Pie
Observe your investment portfolio pie on this screen.Application logs
Colorful logging from all trading terminals in one log roll. No need to open each terminal log.All problems and events can be seen on this page in FinCore app.
Earning/Spending Performance per day/month
This very useful screen shows how you earn/spend money in life and on market.Deals history
Completed/closed trades history.Background Jobs
View and control Jobs. Here you can call various duty jobs. Jobs schedule implemented using Quartz library and set using cron expressions in DB.Metasymbols management
To Add new Symbol to FinCore add new MetaSymbol and then Add new Symbol on this screen. Then Adviser can be created for this symbol.Realtime exchange rates
To Update Exchange rates open and connect your Metatrader terminal with Fincore and start ExhangeRatesJob in Background Jobs















