Alright folks, let me tell you about my little side project, I’m calling it “money holders.” It’s a simple name, I know, but it gets the point across. The idea was to build a system that helps me keep track of all my different income streams and expenses. I was tired of using spreadsheets that were all over the place.
First thing I did was sit down and brainstorm exactly what I needed. I wanted to see where my money was coming from, where it was going, and how much I had left at the end of the month. Simple, right? So, I started sketching out a basic database schema.
I chose to use Python with Flask for the backend. Why? Because I’m comfortable with it, and it’s quick to set up. Plus, I wanted something lightweight. For the database, I went with PostgreSQL. It’s robust and free, which is always a plus.

Next, I actually started coding. I began with the database models. I needed tables for income, expenses, categories (like “rent,” “food,” “freelance,” etc.), and accounts (checking, savings, etc.). It took me a few tries to get the relationships right, but eventually, I had a solid foundation.
Then came the fun part: building the API endpoints. I used Flask-RESTful to make it easy to create endpoints for adding, updating, deleting, and retrieving data. I made sure to include proper error handling and input validation. Nobody wants buggy data!
Now, for the frontend, I went with React. It’s a bit more involved than just slapping together some HTML, but I wanted a dynamic and responsive user interface. I used Create React App to get started quickly. I designed a simple layout with a dashboard showing my overall financial status, and pages for managing income, expenses, and categories.
The biggest challenge was probably getting the frontend to talk to the backend correctly. I had to deal with CORS issues, authentication, and all that jazz. But after a few hours of Googling and debugging, I finally got it working. I used Axios to make API requests from React.
I spent a good chunk of time on styling, using CSS modules to keep things organized. I wanted the interface to be clean and easy to use. I also added some basic charts using * to visualize my income and expenses over time. Seeing the data visually really helps me understand where my money is going.
Once I had the basic functionality in place, I started testing. I added some dummy data and played around with the app to see if anything broke. I found a few bugs and fixed them. Testing is key, folks!
Finally, I deployed it to a VPS using Docker. It makes deployment so much easier. I automated the deployment process with a simple script so I can easily update the app whenever I make changes.
Here’s a quick rundown of the tech stack:
- Backend: Python (Flask, Flask-RESTful)
- Database: PostgreSQL
- Frontend: React
- Deployment: Docker
The whole process took me about a weekend to get a basic version up and running. I’m still adding features and polishing it, but it’s already proving to be super useful. I can now see exactly where my money is going, which helps me make smarter financial decisions.
If you’re thinking about building something similar, I highly recommend it. It’s a great way to learn new skills and get a better handle on your finances. Plus, it’s just plain fun!
What’s next? I’m planning to add support for automatic bank transaction importing, maybe using Plaid or something similar. I also want to add budgeting features and more advanced reporting. The possibilities are endless!