Skip to content

dahlia/fedify

Repository files navigation

Fedify: an ActivityPub server framework

JSR npm GitHub Actions Matrix Follow @hongminhee@todon.eu

Note

Looking for a quick demo? Here it is: Fedify Demo on Deno Playground.

Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse.1 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.

Currently, Fedify provides the following features out of the box:

  • Type-safe objects for Activity Vocabulary (including some vendor-specific extensions)
  • WebFinger client and server
  • HTTP Signatures
  • Middlewares for handling webhooks
  • NodeInfo protocol
  • Special touch for interoperability with Mastodon and few other popular fediverse software
  • CLI toolchain for testing and debugging

If you want to know more about the project, please take a look at the following resources:

If you have any questions, suggestions, or feedback, please feel free to join our Matrix chat space or GitHub Discussions. Or tag #Fedify in the fediverse!

Installation

Fedify is available on JSR for Deno and on npm for Node.js and Bun.

Tip

We recommend using Deno or Bun (which are TypeScript-first) for the best experience, but you can use Node.js if you prefer.

Deno

Deno is the primary runtime for Fedify. As a prerequisite, you need to have Deno 1.41.0 or later installed on your system. Then you can install Fedify via the following command:

deno add @fedify/fedify

Since Fedify requires Temporal API, which is an unstable feature in Deno as of May 2024, you need to add the "temporal" to the "unstable" field of the deno.json file:

{
  "imports": {
    "@fedify/fedify": "jsr:@fedify/fedify"
  },
  "unstable": ["temporal"]
}

Node.js

Fedify can also be used in Node.js. As a prerequisite, you need to have Node.js 20.0.0 or later installed on your system. Then you can install Fedify via the following command:

npm add @fedify/fedify

Fedify is an ESM-only package, so you need to add "type": "module" to the package.json file:

{
  "type": "module",
  "dependencies": {
    "@fedify/fedify": "^0.8.0"
  }
}

Bun

Fedify can also be used in Bun. You can install it via the following command:

bun add @fedify/fedify

Footnotes

  1. You may already know some of the networks in the fediverse, such as Mastodon, Lemmy, Pixelfed, PeerTube, and so on.