Toki - A C# Fediverse server.

prefetcher@sh.itjust.works to Fediverse@lemmy.world – 93 points –
GitHub - purifetchi/Toki: A C# Fediverse server.
github.com

Hi!

For the past ~2 months I’ve been working on my own implementation of an ActivityPub server, as a personal challenge. It’s finally come to the point where I could set up a public federation testing instance (https://testpilot.shinolabs.com/) which surprisingly just works.

While it doesn’t have a frontend yet (due to my severely lacking skills), Toki supports the Mastodon API set, allowing most fedi clients to connect to it.

It’s been a wild journey going from barely understanding ActivityPub and ActivityStreams to having something that actually federates and allows me to talk with the wider Fediverse network. It’s been something I wanted to do since at least 2018, but only now really took the steps to properly attempt it.

I’d love to hear any suggestions or potential bugs people can find (contributions are also welcome ^^)!

Cheers :)

16

I love this.

Especially being written in a language like C#. Which makes it incredibly accessible to work on, performant, and long-lasting.

Something that I’d love to see in a fediverse server that exposes the client-to-server standard of creating statuses instead of just the Mastodon API

C2S is definitely planned in the future (even wrote a blogpost about it https://blog.nanoshinono.me/on-the-topic-of-activitypub-c2s-or-how-to-design-an-alright-protocol-and-have), wanted to get MastoAPI in first, only to have something with wider application support so I can more thoroughly test how the server functions :)

That's a big undertaking, congrats on the release!
Also totally felt that wanting to do something even for years and finally starting it for real

@prefetcher@sh.itjust.works Very nice! I might switch my single-user server to something like this someday - it'd be nice to have something I know how to make changes to. Also looks like the database and cache dependencies all run through ASP.NET Core stuff so they could be replaced (although I know from experience that just because you're using Cosmos DB thru EF Core doesn't mean you can write your schema the same way!)