Fedify: ActivityPub server framework's avatar

Fedify: ActivityPub server framework

@fedify@hollo.social

9 following1,121 followers

:fedify: Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

Pinned

๐ŸŽ‰ Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as โ€œA TypeScript library for building federated server apps powered by ActivityPub and other standardsโ€, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text

Fedify's Open Collective page showing the project logo, description as โ€œA TypeScript library for building federated server apps powered by ActivityPub and other standardsโ€, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.

Pinned

Fedify is an server framework in & . It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

The key features it provides currently are:

If you're curious, take a look at the website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

fedify.dev

Fedify

Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse.

, an server framework, has released v0.12.0. It's a minor release in about a month, so there's quite a few changes:

It's available on JSR and npm now, and you can upgrade it using the deno add command on Deno:

deno add @fedify/fedify@^0.12.0

Or using the bun add command on Bun:

bun add @fedify/fedify@^0.12.0

Or using the npm add command on Bun:

npm add @fedify/fedify@^0.12.0

npmjs.com

@fedify/fedify

An ActivityPub server framework. Latest version: 0.12.0, last published: 2 days ago. Start using @fedify/fedify in your project by running `npm i @fedify/fedify`. There is 1 other project in the npm registry using @fedify/fedify.

Since v0.12.0, when verifying HTTP Signatures or Object Integrity Proofs, it will cache the public keys once fetched. It is okay even if a cached key becomes outdated because a verification failure due to a cached key will invalidate the cache and force a verification retry.

This feature is available for preview in v0.12.0-dev.307+235629d5 (JSR or npm).

npmjs.com

@fedify/fedify

An ActivityPub server framework. Latest version: 0.11.3, last published: 7 days ago. Start using @fedify/fedify in your project by running `npm i @fedify/fedify`. There is 1 other project in the npm registry using @fedify/fedify.

Working on the `fedify init` command, the project setup wizard for โ€ฆ

A demo of the `fedify init` command. The JavaScript runtime choices are Deno, Node.js, and Bun, of which Deno is selected. The web framework choices are Bare-bones, Astro, Fresh, and Hono, with Hono selected. The key-value store options are No cache, Redis, and Deno KV, with Deno KV selected. The message queue options are No background jobs, Redis, Deno KV, and Deno KV is selected. Finally, an Hono project integrated with Fedify is created and the server is started by running the `deno task dev` command.
ALT text

A demo of the `fedify init` command. The JavaScript runtime choices are Deno, Node.js, and Bun, of which Deno is selected. The web framework choices are Bare-bones, Astro, Fresh, and Hono, with Hono selected. The key-value store options are No cache, Redis, and Deno KV, with Deno KV selected. The message queue options are No background jobs, Redis, Deno KV, and Deno KV is selected. Finally, an Hono project integrated with Fedify is created and the server is started by running the `deno task dev` command.

@fedicat@pc.cafe

finally getting to the part of my deno-fedify experiment, first thing working is the nodeinfo support

screenshot of web browser showing a debug view of JSON showing server info
ALT text

screenshot of web browser showing a debug view of JSON showing server info

offers robust logging capabilities through integration with LogTape. This feature allows you to easily debug and monitor your Fedify app!

To enable , simply install the @logtape/logtape package and configure it in your app's entry point:

import { configure, getConsoleSink } from "@logtape/logtape";

await configure({
  sinks: { console: getConsoleSink() },
  filters: {},
  loggers: [
    { category: "your-app", sinks: ["console"], level: "debug" },
    { category: "fedify",   sinks: ["console"], level: "info" },
  ],
});

Fedify uses hierarchical categories for fine-grained control over log output. Key categories include ["fedify", "federation", "http"] for HTTP requests/responses and ["fedify", "federation", "inbox"]/["fedify", "federation", "outbox"] for incoming/outgoing activities. (There are more categories.)

With integration, you gain valuable insights into your Fedify app's behavior, making troubleshooting and optimization much more straightforward!

https://fedify.dev/manual/log

fedify.dev

Logging | Fedify

Logging is a useful tool for debugging your federated server app. This section explains how to enable logging in your federated server app.

also focuses on the practical side of . Its docs includes guidance on using the vocabulary API in line with de facto norms set by popular implementations like . Build more interoperable apps with less headache! ๐Ÿค

fedify.dev

Pragmatics | Fedify

This section explains the pragmatic aspects of using Fedify, such as how to utilize the vocabulary API and the de facto norms of ActivityPub implementations.

Debugging interactions can be tricky, but 's got your back! It includes a CLI toolchain for testing and debugging, making development and troubleshooting a breeze. Spend less time scratching your head and more time building awesome features! ๐Ÿ”

fedify.dev

fedify: CLI toolchain | Fedify

The fedify command is a CLI toolchain for debugging ActivityPub-enabled federated server apps. This section explains the key features of the fedify command.

Flexibility is key! isn't a full-stack solutionโ€”it's designed to work alongside your favorite web frameworks. Whether you're using , , , or others, Fedify has got you covered with easy integration options. Build your app, your way! ๐Ÿ› ๏ธ

unstable.fedify.dev

Integration | Fedify

Fedify is designed to be used together with web frameworks. This document explains how to integrate Fedify with web frameworks.

One of 's strongest features is its type-safe vocabulary objects. These represent the Activity Vocabulary and vendor-specific extensions, ensuring robust and safe code when working with ActivityPub objects and activities. Say goodbye to runtime errors and hello to confident coding! ๐Ÿ’ช๐Ÿผ

fedify.dev

Vocabulary | Fedify

The Activity Vocabulary is a collection of type-safe objects that represent the Activity Vocabulary and the vendor-specific extensions. This section explains the key features of the objects.

Introducing : A powerful library for building server apps in the ! ๐Ÿš€

Fedify aims to simplify the complex world of federated apps, allowing developers to focus on what matters mostโ€”their unique features and user experience. Let's explore what makes Fedify stand out! ๐Ÿงต

fedify.dev

Fedify

Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse.

We released 0.9.2, 0.10.1, and 0.11.1, which patched the last reported , CVE-2024-39687, but the vulnerability of SSRF attacks via DNS rebinding still exists, so we released Fedify 0.9.3, 0.10.2, and 0.11.2, which fixes it.

If you are using an earlier version, please update as soon as possible.

Thanks to @benaryorg for reporting the vulnerability!

Release Fedify 0.11.2 ยท dahlia/fedify

Released on July 9, 2024. Fixed a vulnerability of SSRF via DNS rebinding in the built-in document loader. [CVE-2024-39687] The fetchDocumentLoader() function now throws an error when the given...

@fedify@hollo.social ยท Reply to silverpill
@zeab@fosstodon.org

Woah, is now live in the with @index.

Absolutely outstanding progress! definitely deserves a great deal of recognition for making this possible. ๐Ÿ˜Ž

Feeling like we now have tooling in place to fediverse all things. ๐Ÿ˜…

@ayo@webtoo.ls

looks like there will be lighter-weight alternatives to mastodon, thanks to @fedify โ€” maybe Iโ€™ll hack together a simple one? ๐Ÿ™ƒ

Finally, @ghost has open sourced their implementation powered by ! For Fedify users, this means another production-grade example code.

If you'd like to follow updates on 's ActivityPub implementation, you can do so by following @index!

https://github.com/TryGhost/ActivityPub

github.com

GitHub - TryGhost/ActivityPub: A full-featured ActivityPub server for networked publishing with Ghost

A full-featured ActivityPub server for networked publishing with Ghost - TryGhost/ActivityPub

@quillmatiq@mastodon.social

Two big pieces of news in Ghost's progress on ActivtyPub integration:

1. You can now follow their newsletter from the Fediverse at this address: @index
2. They've open sourced their ActivityPub work!

We're many steps closer to being able to follow Ghost newsletters on the rather than cluttering up your email inbox ๐Ÿ™๐Ÿป

activitypub.ghost.org/lets-fix

activitypub.ghost.org

Let's fix it in production

One small step for pug, one giant leap for pug kind.