Zharko Popovski

Writing SAAS as a hobby - Part 1

Software development as a profession but also as a hobby requires not only clear separation from professional and personal life but also requires a lot of patience and time to finish what you have started. As a family man, the time for my hobby projects is barely 1h - 2h per day, and developing something which implements a complex logic can take a pretty long time.

But everything started as an Idea than as a prototype and with a motivation to evolve that prototype into the real MVP.

Looking for the ideas

Looking for ideas is something we as developers are doing every day, looking for a successful startup, analyzing their concepts and their projects and ideas, and their motivations. I saw many startups how they build and grow their startups starting from a simple idea and I was very curious about how they grow their startups based on so simple ideas. Sometimes if you lack new ideas probably is also good if you find a successful startup and try to clone their project enriched with your personal ideas.

While I was still looking for the idea for my hobby project, I came across some successful startups which they grow their businesses around generating beautiful QR codes. My first thoughts were, what a simple idea, who would need and who would use their products, then I thought, obviously there are a lot of people when they succeded to grow their businesses around so simple idea. Then I registered a free test account on the website of one of those startups I found, played a little bit with their product, and then I made some simple analyses. The idea behind the product was split into two parts, generating the QR codes and generating a short URL saved into the generated QR code. The QR codes they were generating were split also into two categories, static QR codes, and dynamic QR codes. Then I started to be a little more interested in what are dynamic QR codes and what is their real purpose in everyday life.

The static QR codes were nothing special, some data was saved directly into the generated QR code, I thought, ahh ok, this is pretty simple, then I generated some dynamic QR codes and the only thing that was saved inside generated QR code was short URL which makes the redirect. Then I realized that their dynamic QR codes are used only to point to some SAAS service they offer and redirects URLs are for building statistics which made me more and more curious and forced me to decide to develop a prototype... just for fun and something like my toy project.

Development Decisions

For developing the prototype I decided to use the programming language PHP because of its availability and easy to use libraries for generating the QR codes. After finishing a simple prototype I decided to make a web service around the QR code generating prototype. For developing the backend around the QR code generating prototype I was in dilemma between two web frameworks, Codeigniter which is the smallest and the fastest PHP web framework, and Symfony which is the most scalable web framework, and because I knew that later I would think on scaling my hobby project into at least MVP I decided to use Symfony as the framework of choice. Now is pretty standard almost by every framework the possibility for RAD ( Rapid Application Development ) which speeds up a development process pretty much, so using the Symfony console, make and some other bundles I developed a basic web backend for my toy project with JWT Auth system, database models, controllers logic pretty fast.

Following the modern development trends, I decided to split the backend of the QR code generator and the frontend which I decide to implement in the frontend framework Angular because I like the separation of the templates from the main controller logic provided by an MVC pattern, so I developed basic frontend with some components and a very basic design, and I then stopped because of the lack of ideas. After hours spent in research, I continued with further development deeper and deeper and left the design for the end ( which was my big mistake ). In the meantime a saw that my home hobby toy project is not MVP anymore I decided to call a friend and a colleague who work with me on my everyday job to help me with the design because my focus was more on developing the features and definitely I needed help.

For logging the activities and statistics firstly I thought to implement everything by myself in Symfony for the simplicity but then I thought, wait, a monolithic backend with the activities tracking would be overkill for the project overall, then I decide to use one Go / Redis microservice which I wrote many years ago for the activities tracking. Later I decided that for my MVP writing and extending my analytics Go service is pretty time-consuming so to cut the development process I decide to use one popular open source analytics system as a service until the project is still in the early stages.

Most of the features are implemented and after almost two years of development, finally, the project is very close to finishing the Alpha version.

More about this hobby SAAS project in part 2.