Week 1 in review

On March 1st the 9th round of the Prototype Fund has officially begun and we’re a part of it!

After the initial kickoff workshop past Monday and the last bits of paperwork out of the way, the first week was all about setting up the initial infrastructure.

What did I do?

To start off the project I focused on the groundwork for testing, deployment, and the basic app skeleton.

I initialized Mapper, the main database app, using Rails 6 and Postgres. This will be an API server with all the logic.

For authentication I chose JSON web tokens, which I never really worked with but wanted to for a long time. Of course everything took longer than expected until I got my first user sessions going. Luckily I found this blog post by Yulia Oletskaya that even came with tests. Nice.

Btw, I installed Insomnia as an open source alternative to Postman for testing endpoints. (Well, the client is open source, their paid hosted services are not) It’s pretty nice, would recommend.

Yulia uses the jwt_sessions gem which keeps track of tokens with the help of Redis, so I setup Redis, too. That might be useful for caching and other stuff in the future, too.

I set up CI with GitHub Actions, which was smoother than expected. After that I installed Rubocop for linting (I get very sloppy if there are no checks in place, and the initial fixing I already had to do was quite surprising…) and added it as a step in CI as well. Boom! Integration with Coveralls for code coverage and Sentry for exception tracking are still on my list though.

While setting up automation of things I decided to setup up CD to a staging environment on a hobby dyno on Heroku as well. I want the production app to be deployed on a VPS via docker (-compose) but it will take some time until that is all done and available. So, why not have an always up-to-date version running for easy testing and have an alternative way to deploying? Exactly!

For documentation and a developer blog I set up this page, using Hugo as static site generator and the Hugo Whisper Theme and made some adjustments. Github Actions also helps here with automatic deployment to GiHub Pages.

Too much GitHub? Probably, but it definitely helps getting setup quickly. I’m more familiar with the interface than with GitLab’s, plus I don’t want the hassle to maintain (and pay for) my own infrastructure at this point.

What am I doing right now?

Now that the baseline automation is in place, let’s get coding!

Database-wise I want to work through the baseline user management, app and environment settings and ideally start the modeling of cases. The last part is quite interesting so I’m thinking of doing a dedicated post just on this.

Coming Friday I’ll also meet with the Feminizidmap team for a first walkthrough and round of user stories. I’ll expect a lot of input and tickets for the frontend and I hope to have enough backend in place to quickly push out a first version 🤞.

Motivations & challenges

I’m super motivated just by finally starting to work on this full time! I collected a lot of notes with ideas from the past two-ish (three-ish??) years I’m involved with the project and I really hope this tool can make the work in the team easier and push the public discourse further.

In the project we also see more and more inquiries for femi(ni)cide data, from violence-against-women activists, researchers and theater performance creators. It’s definitely a topic that is on people’s minds these days.

A challenge will be digging into data protection guidelines that the project will also need since we’ll be storing names of perpetrators and suspects who are still natural persons protected by the GDPR.