ajanuary.com

Levitation 2024's members portal

I did a lot of software development for this year's Eastercon, Levitation 2024. I ended up almost entirely rewriting both the front end of the PlanZ participant view and the Discord bot, Watson. But the thing that got commented on the most was the members portal. Implementation wise it is incredibly simple, but it was something new and prominently visible.

While this implementation was new, the idea of a member portal isn't. lostcarpark's ConReg was adapted to be a members portal for Conversation 2023, so that the live stream and catch-up had somewhere to live. And there are other conventions I've been to that have portals with a similar ethos to Levitation's.

I think there are two things that made the members portal a success:

A focus on the at-con experience

There was almost nothing on the members portal that was not, in previous years, on the convention's website. But the focus of the website is primary to sell memberships, and secondarily inform members about what they need to know pre-con. How do they book a hotel? How do they get there? Will there be a games room? Filking? What are the childcare arrangements? How do I sign up to be on programme? As a dealer? For the art show? Who do I contact about my access requirements? There is a lot of disperate information that needs to live somewhere on the website, which leads to long and nested navigation menus.

But at-con there are a handful of things you want quick access to. In Levitation's case, it was the readme, the programme guide, streaming, Discord, newsletter, souvenir book, voting, and the collection for venue staff. This is a small enough collection of items to put into a single flat list. And because we've already hooked them in as members, we don't need a flashy and enticing landing page. It can just be a list of the links, right there on the landing page ready to be clicked.

This makes it very easy to find things. While we sometimes had to direct people to the members portal for something, a question we never got asked was where inside the members portal that thing was.

As humans we seem to be incapable of sticking to a single name for things, so I made sure to include all of the ways people might refer to something. While the heading is "Programme guide", the sub-heading is "ConClár". No matter whether you've been told the information is "in the programme guide", or "on ConClár", you should be able to find the correct link to take you there.

Taking advantage of authentication

To access the members portal you had to authenticate. Indeed, this was the inciting motivation for the portal. When someone clicked "Join the Discord", we stored their Discord username alongside their badge number. This is needed for safety reasons: when disciplinary actions is taken against someone in person, we also need to be able to identify who they are in the Discord and apply similar actions there, and vice-versa. The easiest way to pull this off is to make them authenticate as a member of the convention first, grab their Discord username when the log into Discord through OAuth, and tie the two together.

But there are other small ways that being authenticated is useful. Google Forms, which were used for voting, has the ability to generate links that pre-fills fields. This was used as a template to automatically fill in members badge number and/or name when they clicked the voting link.

Programme participants had a link to the programs participant guides show up on their members portal, but non participants didn't have it clutter up their list of links. Discord mods could see the mapping of Discord usernames to badge numbers.

Little touches like this remove friction and make the experience feel more unified.

An at-con focussed authentication mechanism

Straddling the two points above is how members authenticated. I settled on using magic links that are emailed to them and, when clicked, log them in.

Authentication is a hard problem. People are bad at creating good passwords, databases get leaked, passwords get cracked. Some developers have tried to side-step this by using magic links instead. Despite using them for this project, I actually think they are, for the general case, a bad solution. Emails can take a long time to arrive, people don't always have email available on the device they want to log in with (indeed, we had at least one case of this for Levitation), and a bunch of other more technical issues. I still believe that, for now, the best solution is passwords and to encourage everyone to use a password manager.

But for a weekend long convention where we open the portal about a week before it starts, and they rarely need to log in after, we can actually mitigate some of the problems with magic links.

Firstly, we generated a link for every member and sent it to them in the email where we announced the members portal was opening. Secondly, the login session is valid for two weeks. This means that for a large chunk of the membership they're going to read the email on their phone, click the link to check it out, say “that's neat”, close it, and then when they're at the con they open it again and are still logged in through the whole of the convention. They've never seen a login screen or had to think about a password.

Going forward

The idea of having a space that is focussed on the at-con experience has proven itself valuable. Even if it doesn't have fancy bells and whistles, just a page with navigation designed around the at-con experience that links to pages on the regular website would still be a valuable addition to the Eastercon staple.

The members portal came out of a specific technical requirement for the Discord. Because I was on committee I was both able to identify the potential the idea had, and had the free reign to make it happen. Similarly, as soon as I knew we were going to be using PlanZ, and knowing the troubles we had using it the previous year, I could set to work rewriting it to at least be functional on mobile. Tools like PlanZ, Planorama, ConReg, and ConClár are incredibly valuable assets to the community. But they are far from finished, especially with the recent addition of online and hybrid. And there is scope for new tools too. How great would it be to have a job-listings page with filters for time commitment and prior experience needed?

We have, unsrprisingly, a lot of software engineering talent in the community. I would love to see us start advertising for software teams, perhaps even headed by a committee level position. We need to make sure we can continue to grow and adapt these tools to meet our changing needs without overworking and burning out the people who have already contributed so much.