Outrigger
Misskey Blocklist Server
What it is
Outrigger is a way for administrators of Misskey instances to publicly display their instance's list of blocked domains, as well as provide reasoning for a domain being blocked. Because the Fediverse relies on community moderation to curb harassment, it's useful as an admin to be able to see what domains other servers are blocking and why; a function that Misskey doesn't currently provide. I wanted to be able to show the block list for The Garden without having to keep it up to date manually, and in a way that people without any familiarity with Misskey's UI could easily find it.
Outrigger itself is a SvelteKit server that uses
Skeleton UI on the front end. The backend pulls the block
list from whatever instance it's configured to point at and saves it to a SQLite database
where other metadata (block reason, the admin or mod responsible) can be added later. The
frontend also supports export the list to a .csv
file, which can then be imported
by other fediverse servers which support it (i.e. Mastodon).
What it taught me
Writing outrigger gave me a chance to explore some parts of SvelteKit that I didn't have much experience with at the time. Server admins needed to be able to add metadata to each block in the list, so I had to figure out how to handle authenticating with the Firefish API (which was a bit of a chore in itself due to a lack of documentation). I'd never used the cookie api in SvelteKit, and quickly realized that I'd have to encrypt anything I stored there myself, so I had to learn how to work with subtle crypto as well.
Outrigger was also the first project I used Skeleton for, though now it is a favorite for any SvelteKit project. I don't consider myself much of a designer, so being able to get a nice looking site from the jump really sped up the development of the project. I had also been resistant to Tailwind for a long time, not wanting to need to put styles all over my markup. But having worked with it now it is hard to deny how much simpler it is to style a page with it as opposed to regular CSS. I still don't love the how of Tailwind, but I certainly understand the why.