Tracking club attendance in Flutter

My debating society always has lots of new people, but then exam time rolls around and afterwards they don’t come back. So we wanted to track who had a real interest in debating to make sure we could keep these active.

The solution: A custom app in which we can add events, add people to events and sync this with Mailchimp. The app can then sort people into categories (came a few times but not in the last month, etc.) and add these as a target audience in Mailchimp so we can send a personalized campaign to them.

I decided to write this in Flutter, a framework from Google that promises near-native iOS and Android Apps. If you have ever developed a webapp with React or Angular, Flutter will feel instantly familiar.

First, I needed a model of the Mailchimp member API. It is a REST API, but since dart:mirrors doesn’t work in Flutter we can’t just derive classes from the JSON. Instead I generated it with a custom fork of Json to dart.

Building the App itself was fairly straightforward. While some things took longer than I would have hoped, I never encountered a point where something I wanted to do was impossible or different from how I expected it to work.