Fedify: an ActivityPub server framework
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 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 & HTTP Message Signatures
- Object Integrity Proofs & Linked Data Signatures
- Middlewares for handling webhooks
- NodeInfo protocol
- Enhanced interoperability with Mastodon and other popular fediverse software
- Integration with various web frameworks
- 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!
[^1]: You may already know some of the networks in the fediverse, such as Mastodon, Lemmy, Pixelfed, PeerTube, and so on.
Packages
Fedify is a monorepo that contains several packages, each of which provides different features. The main package is @fedify/fedify, which provides the core functionality of the framework. Other packages provide integrations with various web frameworks, database drivers, and other features. Here is the list of packages:
| Package | JSR | npm | Description |
|---|---|---|---|
| @fedify/fedify | JSR | npm | The core framework of Fedify |
| @fedify/cli | [JSR][jsr:@fedify/cli] | [npm][npm:@fedify/cli] | CLI toolchain for testing and debugging |
| @fedify/create | [npm][npm:@fedify/create] | Create a new Fedify project | |
| @fedify/amqp | [JSR][jsr:@fedify/amqp] | [npm][npm:@fedify/amqp] | AMQP/RabbitMQ driver |
| @fedify/astro | [JSR][jsr:@fedify/astro] | [npm][npm:@fedify/astro] | Astro integration |
| @fedify/backfill | [JSR][jsr:@fedify/backfill] | [npm][npm:@fedify/backfill] | ActivityPub backfill support |
| @fedify/cfworkers | [JSR][jsr:@fedify/cfworkers] | [npm][npm:@fedify/cfworkers] | Cloudflare Workers integration |
| @fedify/debugger | [JSR][jsr:@fedify/debugger] | [npm][npm:@fedify/debugger] | Embedded ActivityPub debug dashboard |
| @fedify/denokv | [JSR][jsr:@fedify/denokv] | Deno KV integration | |
| @fedify/elysia | [npm][npm:@fedify/elysia] | Elysia integration | |
| @fedify/express | [JSR][jsr:@fedify/express] | [npm][npm:@fedify/express] | Express integration |
| @fedify/fastify | [JSR][jsr:@fedify/fastify] | [npm][npm:@fedify/fastify] | Fastify integration |
| @fedify/fresh | [JSR][jsr:@fedify/fresh] | Fresh integration | |
| @fedify/h3 | [JSR][jsr:@fedify/h3] | [npm][npm:@fedify/h3] | H3 integration |
| @fedify/hono | [JSR][jsr:@fedify/hono] | [npm][npm:@fedify/hono] | Hono integration |
| @fedify/init | [JSR][jsr:@fedify/init] | [npm][npm:@fedify/init] | Project initializer for Fedify |
| @fedify/interaction-controls | [JSR][jsr:@fedify/interaction-controls] | [npm][npm:@fedify/interaction-controls] | Interaction control helpers |
| @fedify/koa | [JSR][jsr:@fedify/koa] | [npm][npm:@fedify/koa] | Koa integration |
| @fedify/lint | [JSR][jsr:@fedify/lint] | [npm][npm:@fedify/lint] | Linting utilities |
| @fedify/nestjs | [npm][npm:@fedify/nestjs] | NestJS integration | |
| @fedify/next | [npm][npm:@fedify/next] | Next.js integration | |
| @fedify/nuxt | [JSR][jsr:@fedify/nuxt] | [npm][npm:@fedify/nuxt] |