Want to build an ActivityPub client; where to start?

I’d like to build an ActivityPub client, but to start off I feel that I need to define a Minimum Viable Product. What’s the absolute minimum a client needs, in order to follow an Actor and receive posts? Do I need to start by implementing OAuth2?

1 Like

Hi @tinyrabbit I had the same question almost two years ago, and this is what I composed:

You could use #software:andstatus app as a debugging tool, at least… :slight_smile:
1 Like

My client will be web-based, which poses a kinnda weird (to me, at least) situation: it should itself be protected by a login, while also logging in to one or more servers…

Maybe I’m being impractical here. What I want to do is a frontend, but I assumed that a frontend would be the same thing as a client if it’s going to be compatible with several backends. I may be mistaken there.

But I take it the OAuth thing is pretty much the first thing I need to implement either way…

Regarding OAuth I agree, you can do nothing before you successfully authenticated at a server.

I also think that Web-based client (even if it’s a “frontend” of a collocated ActivtyPub server) should ideally use the same interface to the server as any other client app.
So authentication on the Web client can be unrelated to authentication on the ActivtyPub server. Just like we unlock smartphone in order to use mobile device-based client app that, in its turn, authenticates at several ActivtyPub servers in a different way…

If OAuth sounds quite complex to you, you could start with HTTP Basic (Pleroma supports both) at first just to test that the rest will be working but I wouldn’t use HTTP Basic other than for testing/debugging if you store tokens.

As for storing tokens on the client side, you could use the LocalStorage API if you use JavaScript.

Please note that “Web-based” client doesn’t necessarily mean that the client cannot have its own server-side, including server-side (“cloud-based”) storage…
Moreover, having such a server-side will allow to reuse a lot of existing code of client apps. Literally! Just add to it an embedded http server for Web access…

This could also be not only JVM-running code (in Java or Kotlin) that Android Open Source apps use, but also a native Linux app compiled e.g. using Kotlin native. Why not, if you are creating a new app?!

Thanks for the replies, everyone :slight_smile:

I’ve taken stock of my limited time and way too limited web dev experience and changed the focus of this. It’s gonna be some time before I make noticeable progress, I’m afraid :smile: