moth/docs/user-tracking.md

1.8 KiB

User Tracking

We need some way to have track users uniquely.

Motivation

Individual progress

We're way too far gone on this one. I fought it while I could, but everybody and their dog wants to track individual progress, so we need to continue providing at least advisory information about who's doing what.

Attendance

CPE certificates are the biggest driver here. Doing this client-side won't work, because people want to fight me about their certificates, and I need something to fall back on.

The sponsor also has a keen interest in attrition, and we need attendance data for this as well.

Chat

We need to integrate a chat system, and for our big events, we need the chat system to use the "display name" provided by each participant.

Requirements

Essentially, we need something like team ID, but for an individual participant.

Support drop-in events

One of our big wins right now is our ability to run drop-in events, like Def Con contests, high school science cafes, etc.

We dealt with this by pre-generating authentication tokens and providing a /register API endpoint to set a team name. This was a good design and we should keep this.

Run without Internet

Def Con's network is crap, and we may yet run another event that's disconnected. We need a way to run events without an Internet connection.

Minimal storage

If possible, I'd prefer to not even have a password. Ideally just a token for user, and their display name.

Solution

I'm realizing the best solution is to do almost nothing.

We already have a client that provides a "participant ID", which is logged into the event log.

The new chat system could pretty easily cache a mapping of pid to display name. On cache miss, it could use whatever backend is provided to look things up. This could be alfio, a URL to a CSV file, or something else.