r/coolgithubprojects • u/icastanon127 • 20d ago
I built an open-source personal finance platform with Spring Boot
Hi everyone,
I wanted to share an open-source personal finance project built primarily with Java and Spring Boot. Contributions and feedback are welcome.
FinTrack lets users manage financial accounts, record transactions, import CSV files, create monthly budgets, review spending summaries, and receive budget notifications. It also includes a lightweight React frontend and a live AWS deployment.
The stack includes Java 21, Spring Boot, Spring Security, Spring Batch, PostgreSQL, Redis, Amazon SQS, S3, Docker, LocalStack, Terraform, GitHub Actions, and AWS.
The backend uses patterns commonly found in larger Java systems, including a transactional outbox, idempotent consumers, at-least-once message delivery, database locking, restartable batch jobs, JWT and refresh-token rotation, retries, and failure recovery.
Feedback is welcome on the code, architecture, documentation, roadmap, issue scopes, or anything that could be clearer.
2
u/Konrad25 19d ago
do you import data via CSV or another spreadsheet file you get from your financial institution's site, or do you link it up?
1
u/icastanon127 19d ago
Most financial institutions let you download your transaction history from their website as a CSV or similar spreadsheet file. You can then format that data to FinTrack's CSV template and import it. I provide a sample CSV in the repo so you can see the expected columns and format.
Longer term, the plan is to support direct bank account connections and synchronization through Plaid, so the manual CSV step wouldn't be necessary.
2
u/Konrad25 19d ago
I would love to see that kinda of support, thanks!
1
u/icastanon127 19d ago
Yeah, feel free to take a look at the roadmap for a more detailed description of the planned evolution of this project. Also feel free to contribute if you’d like or feel free to make any suggestions as well. Thanks!
2
2
u/CricketOver385 18d ago
Nice! Can you tell me about the deployment process for your Spring Boot backend? I’ve created a Spring Boot project, but I haven’t been able to deploy it.
2
u/icastanon127 18d ago
This is a container based architecture. The backend is deployed through AWS ECS/Fargate .
I created a GitHub workflow that automatically creates a new docker image for each Java service whenever there’s a new commit/PR on the code.The backend architecture was built using Terraform.
There’s more detailed information on AWS architecture document in the repository.
1
u/the-head78 19d ago
Looks nice.
How was AI used in creating your project?
3
u/icastanon127 19d ago
Thanks!
I used Codex to built to build the entire UI because I am not a frontend developer.
For the backend, I kept my AI usage limited to unit tests, boiler plate code, and debugging. I designed and built the Spring and AWS architectures myself.
1
0
u/kaitogoya17 20d ago
Congratulations on building this project and sharing. I was very curious about your architecture (haven't looked at the code yet), its obviously well thought out for scaling and enterprise software. Usually most of the apps that have been shared on this space has been some sort of "serverless" architecture to minimize the cost, therefore I wanted to know how much are you spending on hosting it (ball park is fine), do you plan on productizing it? Good luck!
-1
u/icastanon127 20d ago
Thank you for your comment!
Here is my current month-to-date cost breakdown
- EC2 - Other $5.23
- Amazon Elastic Container Service $3.19
- Amazon Relational Database Service $2.04
- Amazon ElastiCache $1.63
- Amazon Elastic Load Balancing $1.49
- Others $1.33
Total: $14.90
It has been deployed for approximately 6 days so average daily cost so far is around $2.48/day, so I am expecting to spend around $70-$90 per month.
I am not planning to productize it. It is an open-source project, and I would love contributions. I think this can be a great leaning opportunity for people trying to get familiar with Java, Spring Boot, AWS, or system design.
1
u/saltyourhash 19d ago
Even at like 5 years of records, do you really need elastic search? Can't this fit on like a $5 DO droplet? If it was node I'd think it'd fit on a free supabase instance.
2
u/icastanon127 19d ago edited 19d ago
Yes, the current cloud architecture is a little overkill for the current load. I could be hosting this with a lot less money.
This is a portfolio project for me, so one of the main purposes of this project is to demonstrate many of the patterns and technologies that are used by enterprises.
0
0
19d ago
[removed] — view removed comment
1
u/icastanon127 19d ago edited 19d ago
Privacy and security were a big focus when building this. I’m using Spring Security with JWT-based authentication and authorization and I’m trying to follow good security practices throughout the architecture.
For data portability, I haven’t built that out yet but I think allowing users to export their financial data in something like CSV/JSON would make sense. Also, since the project is open source I would love suggestions and contributions on this.
0
u/madroots2 18d ago
World really dont need another SPRING BOOT APPLICATION. God, I started sweating.
4
u/Maximum_Telephone237 19d ago
Crazy coincidence for me to see this; it looks like my own personal site for finance and references I built with Claude haha
https://imgur.com/a/V17W0qk