Ak hľadáte stránku na odber notifikácii o COVID-19 očkovaní na Slovensku, nájdete ju na covid.neuromancer.sk. Stránka poskytuje notifikácie na Váš email o voľných miestach na očkovanie proti ochoreniu COVID-19 a tiež o momente otvorenia očkovacieho formuláru pre nové skupiny obyvateľov. Stránka používa informácie od NCZI avšak nie je s NCZI alebo Ministerstvom Zdravotníctva akokoľvek asociovaná. Pre registráciu na očkovanie použite formulár NCZI.
I spent this past week on a fun side project. Building a webapp that serves notifications to people about availability of COVID-19 vaccination slots in the Slovak COVID-19 vaccination form. You can find the site at covid.neuromancer.sk, although it is only in Slovak.
Building this was fun as I got to use a bunch of interesting technologies and frameworks. The app is built in Flask, like this blog site, with a simple Flask-SQLAlchemy backend on top of SQLite. Data is queried from the same API endpoints as the COVID-19 vaccination form uses. This querying is done periodically using background tasks. I chose Celery on top of Redis as a task queue, because I have used it previously and it plays with Python, Flask and uWSGI very nicely.
I also got to play with Sentry.io which I haven't used before and I found it works great. It has its hooks in almost all of the right places and the amount of information it extracts about issues as they arise is staggering. However, one has to take particular care to not include peoples' PII in the transaction reports to Sentry and properly scrub them.
In the process of building this service I got blocked by NCZI, the National Health Information Centre, which provides the COVID-19 vaccination form and the APIs behind it. I got in contact with them to figure something out, but in the meantime switched over to querying their APIs through the Tor anonymity network. This got blocked as well after a day or so. Currently the notifications are down and I hope that some access can be enabled soon. If the same amount of effort that was spent blocking legitimate services was instead spent on improving the architecture and services offered by NCZI, there could have been an official NCZI notification webapp. ¯\_(ツ)_/¯