Because of my travels and my nomadic lifestyle I came accustomed to move a lot. Because of the constant hassle of relocating and moving. I thought about creating a web application that would automate the process that takes care of all the paperwork. This was how project wandr started. Wandr an "abbriviation" of wandering... After doing some research, I found out that it would be more challenging to pivot into another realm. The realm of real estate. That's how wandr became a real estate management app. Below is a case study on this software as a service application.
When thinking about the challenge of this endevour we can distinguish two main types of challenges. The first one is the challenge we face when thinking about the user workflow and capabilities that the application need in order to satisfy the user (user workflow). The second one is the technical aspect of creating this application and make it economically viable (technology stack).
When we look at the first challenge. (user workflow) -- I wanted a web application that would solve the hassle real estate managers face when organising and grouping important data. One application to rule all documentation. The application would transform paperwork from tedious to brainless. Automatic reminders (notifications) are set in place to remind them of important events. Documents would be backed up and ready for later use.
When thinking of the second challenge the technological aspect. Wandr needed to be economically interesting. Storing assets as cheap as possible and only pay for compute used. Also putting an CI/CD in place so future workflows could be automated and less error prone. As icing on the cake it needed to be effertlessly scalable and agile.
Next item on the 'agenda'. Putting together a user story so it is easy to organise the workload. Even though I am the only one working on the project, I believe it is beneficial to work in an agile environment, use a kanban system to organise the coding efforts and have a good understanding what features are taking up much of the time resources. When measured it is possible to analyse.
In today's times there is an abundance of technologies one can use to create an application. I believe it is important to think carefully and use tools with the end project in mind. For this project I also used tools that I was somewhat familiar with. Because this is an MVP, I didn't want to loose to much time in the beginning learning new programming languages when the tools I already know suffice.
My choice of front end framework is Angular (not AngularJS). I was already familiar with Angular and using this framework was the logical solution for getting to an MVP as soon as possible. I could be using react, that was gaining much popularity at the start of the project. However, I'm a firm believer of being an expert in a few things in contrast to being a jack of all trades. Angular was complimenten with the bootstrap framework and angular materials.
With serverless being being a new abstraction on top of server side computing, I was very eager to go more hands-on into the technology. I was looking forward how easy it would be to create firebase cloud functions (google technologie) and not provision a server. It also is highly elastic, meaning that the app is able to scale from zero to maximum required, then back to zero when necessary. While everything is managed automatically. Google also provides a great sdk to use with nodejs and Angular. In the past most of my backend code was created in nodejs, provisioned and deployed on an EC2 instance from Amazon or deployed on heroku.
I wasn't sure what database to use. Go for mongodb, a familiar choice or go with firebase. Both are NoSQL document store databases. I went for Firebase, I was very curious to see the realtime capabilities of the database and firebase worked really wel with the build in cloud functions from google. Realtime functionality was a nice feature because I wanted to create a messaging service between real estate managers, Tenants and maintenance providers. Also the triggers(callback) when data changes in Firebase are great.