Building Invertimo in the open (as open source)
As far as building in public goes, it’s hard to go more public than making all the code public too! I am building the Invertimo (investment bookkeeping and tracking software) completely in the open. It’s a complex web app written in python and JavaScript.
I submitted 200+ commits over last couple months.
I got the rights
I work at a bit tech company that by default owns everything that I build. There is a process though to ask for permissions to retain the copyrights as a creator. If I have the rights, my company doesn’t care if it’s open source or not, it might as well be. There was no conflict of interest here and it’s not related to my day job, so I was free to own the rights for this specific app.
Why I’m not afraid to share this?
What if someone stills my idea or copies my code?
Well, good luck with that. The app doesn’t do any income, so why would anyone?
My code at times is not that polished, what if people judge me?
I have pretty high standards when it comes to development and sometimes, the code I submit on personal projects is not my best work (but it’s still pretty solid overall, I think). Well, I don’t get paid for writing this and I have limited time to work on the project on the weekends, so I will be cutting some corners. As long as I still have fun writing this, things are good.
On the other hand, it’s cool to share your work like this. It proves that you can build complex things that work and not just tweak things that other have built.
Show casing real applications
There aren’t many examples of complete apps that are publicly accessible like this. It’s a good showcase of solving real problems.
Source code of complete working applications was a great resource to me when I worked in a software house a couple years back. I could easily see how a specific problem was solved and how things were architected. It saved a lot of time.
To give you some taste of what I have built:
- Portfolio overview page
- Onboarding
- Realized gains
And much more… Play with it if you want at invertimo.com.
Technology used
I use pretty standard (boring) technology for invertimo. Here are the details:
Backend:
- python 3.8
- django
- PostgreSQL
Frontend:
- JavaScript & CSS (I haven’t jumped on the TypeScript bandwagon yet!)
- React
- webpack - package management
- material ui - complex frontend components
Infrastructure:
- docker - all app components run in containers and are be built in a reproducible way
- nginx - web server reverse proxy
- Digital Ocean - simple and friendly cloud provider with very clear billing
This set of technologies serves me pretty well for building complex web apps. I believe with some tweaks it could also scale very well.
Major inspirations for setup & architecture
It is hard to create things entirely from scratch and I didn’t do that. I found the resources below especially helpful:
- https://www.obeythetestinggoat.com/ - a fantastic open resource about how to build and test a django application end to end
- https://www.saaspegasus.com/guides/modern-javascript-for-django-developers/ - this was especially helpful for putting Django and JS frontend together.
If you build modern django apps, those resources are golden.
What next
I don’t have much commercial plans with this app, but building it is quite fun and I’m solving my own problems. There is still a bunch of features I could use that I haven’t built yet.
In Q1 2022 I plan to build support for crypto related tracking (e.g. income from staking or crypto savings) and binance (popular centralized exchange) integration. It is going to be a lot of work, I’m sure.
If you enjoy this post and what I am doing, please follow me on twitter. Also feel free to say hi!