Today I am launching Multumesc.org, a non-profit site which informs the community about the absence rate and absence patterns of the members of Parliament from Romania. This project spanned over 7-8 weekends for me and some other contributors, including research, data analysis, coding, testing, automation and UI.
As this was a personal pet project for us, we could not afford to invest a whole lot of time and resources. On the other hand, the way the public and social media would respond to our initiative was highly unpredictable: we could very well have very small traffic (1000 users per day) and then burst out, briefly and immediately to 10K users for an hour or two, should a newspaper or online magazine pick up the news.
Additionally, we had two pieces of information which helped in our designȘ
- The information from Multumesc.org would be updated automatically (by the data analysis component)
- The information would be updated infrequently (once every 24-48h)
Thus we decided to make all of the website content static, with the attendance data for the deputies updated in the background, in a periodic batch task. This decision allowed us to deliver an automatically scalable minimal viable product quickly, without spending another 4-6 weekends thinking about automatically deploying and scaling web servers.
Find below the diagram of our system:
For the dynamic parts of the website (user feedback, comments, messages and analytics), we decided to use external components from Facebook and Google Analytics.
So as to make the experience interactive for the users, we have used jQuery components for dynamic tables and charts, as well as for displaying deputy profiles. This way, all the necessary data is downloaded statically into the browser when the page loads, subsequently serving as small lightning-fast in-memory database for search queries.
As a conclusion, considering the actual constraints and opportunities of a project (i.e. infrequently updated data) can significantly reduce the complexity of a project. Also, with current cloud services, designing a scalable MVP becomes significantly more manageable in weekends.