[!NOTE] Hi! I am Martin and I would like to share with you app that I developed. I decided to share my work so it can be helpful to anybody. I will be pleased if you can make this repository useful to you. Fork it, reuse any of parts as you like. Feel free to contact me with any questions or problems. Have a nice day! Martin
FinSys is a local Personal Finance Management System that is build for customization. It's core is PostgreSQL database that will unite data from all your sources (banks, cash wallet).
Built for month revision workflow - after end of calendar month you are going to import every transaction from previous month into FinSys and revise your finance health.
FinSys supports adding transactions manually or via csv file.
For data visualization I use Superset, but you can use whatever you want - even Excel. Superset supports multiple dynamic filters - you can filter by date you want, types of transactions etc.
FinSys is divided into 2 separate parts:
[!TIP] More screenshots: Screenshots
I was using Excel for long time. It was lot of hassle to make it work. I never achieved 100% accuracy of data even when using macros. Creating multi-month spreadsheets were a nightmare.
I tried existing finance management apps (like Spendee) but it didn't do a great job at categorizing transactions and auto-mapping transfers between accounts. While I didn't want to pay another subscription to manage my subscriptions 🙃
So I created my own finance system. I love the solidity and correctness of data in full SQL db - not just random excel spreadsheets.
Apache Superset is an open-source data visualization platform. You can easily create dashboards and charts right from your database.
[!NOTE] Requirements:
- Docker
- Node (version 22)
- Yarn (version 1.22)
Clone project
git clone [email protected]:martinskalik/finsys.git
cd finsys
# Start Postgres db and Superset
docker compose up -d
# Create db views and triggers
docker exec -i finsys-postgres psql -U postgres -d finsys < scripts/sql/db-views.sql
docker exec -i finsys-postgres psql -U postgres -d finsys < scripts/sql/updated-at-trigger.sql
# Add Initial demo data to DB
docker exec -i finsys-postgres psql -U postgres -d finsys < scripts/sql/mock-data.sql
echo "Hurayy! Superset is now available on 'http://localhost:8088/'."
superset/dashboards/dashboards.zip
docker-compose.yml
)
You should see all dashboards now!cp .env.example .env
yarn dev
[!TIP] This step is not required if you want to only see demo data in Superset.
[!NOTE] These steps require some SQL management app (or you can use plain SQL if you are brave enough 😉).
[!TIP] I personally use Beekeeper studio on Mac, it's free. Alternatively you can use inbuilt web sql studio from drizzle - that looks really nice and no additional connection settings are required
yarn run db:studio
.
Create your accounts (wallets) in accounts
table.
Next thing you will have to input initial balances of accounts. Create row in account_balances
table for each account. Put first day of month you want to import - e.g. 2025-09-01
if you are going to import September.
Mechanism to make sure that all transactions are recorded and no mistakes were made.
Wizard calculates net transactions for specific month and compares it to starting and ending balance of account.
Dashboard Mapping transactions - You can see how much you spend on this subscriptions
No specific deadlines - I will try to improve what will show as biggest problem.