What was hard, you ask? Short answer: the complexity of the product.
(Very) Long answer: Yesterday I found a note in my OneNote dated Sep 2, 2016. It had a draft on what such deployment automation can be.
I was thinking about it since that time.
The first hard thing was to decide what tech I should use and what approach to use.
At first, I wanted to use "supervisord" and build everything on bare metal.
Then I understood that I should put more time into learning about docker. Everyone was saying "containers, containers, containers [balmer.gif]"
After I got familiar with docker, I've started to write bash scripts to build app, read about how Heroku works and a lot of other materials.
Then came the long part of trying to make apps build with a bunch of bash-scripts and eventually I was able to build all of my apps. I was happy and thought that I was almost ready with the app, I just need to build a frontend for that. Oh, I was so wrong.
Every new achievement that I had, every new door I was able to open led me to hundreds of new doors to open (including those I shouldn't touch). What I mean by that is after solving a problem, I found other things to solve and options to pursue.
Eventually, I got so deep in this never-ending-doors fight, that I lost my focus. My initial idea was to help deploy/run python and Django apps in the best way possible.
When I lost my focus and got overwhelmed by constant building and mountains of things I can/should build I had a slight depression.
I stepped back and given that I had some noticeable personal problems to solve I was able to switch from thinking about the app.
When I got back with a fresh head I realized that I should get back to the original focus and start to compare all new ideas and options (those doors from metaphor) to it. Is a new feature/option/idea fits for the original purpose of the app or not?
Then it all started to get easier.
Then I was able to plan ahead knowing what I should do and discarding what I shouldn't. I realized that the backlog was huge. But every single task wasn't super hard.
All this gave me peace of mind. And I started to work on it, persistently. I understood that I will not be able to ship it super fast and there are still technical decisions I will have to think thru and they also will take time. I found my pace. Every day I produced a little bit of work.
What helped was some well-known people say phrases like "it is not the matter who starts, it is a matter who keeps going". I knew that project is complex and there are so many edge cases that I should take care of. It will take time.
So, 14 months after buying the domain appliku.com (roughly the beginning of the coding) I still have the stuff to do. And always will.
So to sum this up: - For such a complex app, I set out to build I had to figure out boundaries. - I had to find my pace - I had to remember that I am building exactly the app I always needed and never found elsewhere.
told you, it will be a long answer :)
Hope I have answered your question!