UNPKG

@fedify/fedify

Version:

An ActivityPub server framework

236 lines (197 loc) 14.4 kB
<!-- deno-fmt-ignore-file --> ![](./logo.svg) Fedify: an ActivityPub server framework ======================================================= [![JSR][JSR badge]][JSR] [![npm][npm badge]][npm] [![GitHub Actions][GitHub Actions badge]][GitHub Actions] [![Matrix][Matrix badge]][Matrix] [![Follow @fedify@hollo.social][@fedify@hollo.social badge]][@fedify@hollo.social] > [!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 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][FEP-8b32] & [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: - [Installation] - Tutorials: [Learning the basics] & [Creating a microblog] - [Migrating from other libraries] - [API reference][JSR] - [Examples] If you have any questions, suggestions, or feedback, please feel free to join our [Matrix chat space][Matrix] 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. [JSR badge]: https://jsr.io/badges/@fedify/fedify [JSR]: https://jsr.io/@fedify/fedify [npm badge]: https://img.shields.io/npm/v/@fedify/fedify?logo=npm [npm]: https://www.npmjs.com/package/@fedify/fedify [GitHub Actions badge]: https://github.com/fedify-dev/fedify/actions/workflows/build.yaml/badge.svg [GitHub Actions]: https://github.com/fedify-dev/fedify/actions/workflows/build.yaml [Matrix badge]: https://img.shields.io/matrix/fedify%3Amatrix.org?logo=matrix [Matrix]: https://matrix.to/#/#fedify:matrix.org [@fedify@hollo.social badge]: https://fedi-badge.deno.dev/@fedify@hollo.social/followers.svg [@fedify@hollo.social]: https://hollo.social/@fedify [Fedify Demo]: https://dash.deno.com/playground/fedify-demo [ActivityPub]: https://www.w3.org/TR/activitypub/ [fediverse]: https://en.wikipedia.org/wiki/Fediverse [Activity Vocabulary]: https://www.w3.org/TR/activitystreams-vocabulary/ [WebFinger]: https://datatracker.ietf.org/doc/html/rfc7033 [HTTP Signatures]: https://tools.ietf.org/html/draft-cavage-http-signatures-12 [HTTP Message Signatures]: https://www.rfc-editor.org/rfc/rfc9421 [FEP-8b32]: https://w3id.org/fep/8b32 [Linked Data Signatures]: https://web.archive.org/web/20170923124140/https://w3c-dvcg.github.io/ld-signatures/ [NodeInfo]: https://nodeinfo.diaspora.software/ [Installation]: https://fedify.dev/install [Learning the basics]: https://fedify.dev/tutorial/basics [Creating a microblog]: https://fedify.dev/tutorial/microblog [Migrating from other libraries]: https://fedify.dev/manual/migrate [Examples]: https://github.com/fedify-dev/fedify/tree/main/examples [GitHub Discussions]: https://github.com/fedify-dev/fedify/discussions [#Fedify]: https://mastodon.social/tags/fedify [Mastodon]: https://joinmastodon.org/ [Lemmy]: https://join-lemmy.org/ [Pixelfed]: https://pixelfed.org/ [PeerTube]: https://joinpeertube.org/ 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](/packages/fedify/) | [JSR] | [npm] | The core framework of Fedify | | [@fedify/cli](/packages/cli/) | [JSR][jsr:@fedify/cli] | [npm][npm:@fedify/cli] | CLI toolchain for testing and debugging | | [@fedify/create](/packages/create/) | | [npm][npm:@fedify/create] | Create a new Fedify project | | [@fedify/amqp](/packages/amqp/) | [JSR][jsr:@fedify/amqp] | [npm][npm:@fedify/amqp] | AMQP/RabbitMQ driver | | [@fedify/astro](/packages/astro/) | [JSR][jsr:@fedify/astro] | [npm][npm:@fedify/astro] | Astro integration | | [@fedify/cfworkers](/packages/cfworkers/) | [JSR][jsr:@fedify/cfworkers] | [npm][npm:@fedify/cfworkers] | Cloudflare Workers integration | | [@fedify/debugger](/packages/debugger/) | [JSR][jsr:@fedify/debugger] | [npm][npm:@fedify/debugger] | Embedded ActivityPub debug dashboard | | [@fedify/denokv](/packages/denokv/) | [JSR][jsr:@fedify/denokv] | | Deno KV integration | | [@fedify/elysia](/packages/elysia/) | | [npm][npm:@fedify/elysia] | Elysia integration | | [@fedify/express](/packages/express/) | [JSR][jsr:@fedify/express] | [npm][npm:@fedify/express] | Express integration | | [@fedify/fastify](/packages/fastify/) | [JSR][jsr:@fedify/fastify] | [npm][npm:@fedify/fastify] | Fastify integration | | [@fedify/fresh](/packages/fresh/) | [JSR][jsr:@fedify/fresh] | | Fresh integration | | [@fedify/h3](/packages/h3/) | [JSR][jsr:@fedify/h3] | [npm][npm:@fedify/h3] | H3 integration | | [@fedify/hono](/packages/hono/) | [JSR][jsr:@fedify/hono] | [npm][npm:@fedify/hono] | Hono integration | | [@fedify/init](/packages/init/) | [JSR][jsr:@fedify/init] | [npm][npm:@fedify/init] | Project initializer for Fedify | | [@fedify/koa](/packages/koa/) | [JSR][jsr:@fedify/koa] | [npm][npm:@fedify/koa] | Koa integration | | [@fedify/lint](/packages/lint/) | [JSR][jsr:@fedify/lint] | [npm][npm:@fedify/lint] | Linting utilities | | [@fedify/nestjs](/packages/nestjs/) | | [npm][npm:@fedify/nestjs] | NestJS integration | | [@fedify/next](/packages/next/) | | [npm][npm:@fedify/next] | Next.js integration | | [@fedify/nuxt](/packages/nuxt/) | [JSR][jsr:@fedify/nuxt] | [npm][npm:@fedify/nuxt] | Nuxt integration | | [@fedify/mysql](/packages/mysql/) | [JSR][jsr:@fedify/mysql] | [npm][npm:@fedify/mysql] | MySQL/MariaDB driver | | [@fedify/postgres](/packages/postgres/) | [JSR][jsr:@fedify/postgres] | [npm][npm:@fedify/postgres] | PostgreSQL driver | | [@fedify/redis](/packages/redis/) | [JSR][jsr:@fedify/redis] | [npm][npm:@fedify/redis] | Redis driver | | [@fedify/relay](/packages/relay/) | [JSR][jsr:@fedify/relay] | [npm][npm:@fedify/relay] | ActivityPub relay support | | [@fedify/solidstart](/packages/solidstart/) | [JSR][jsr:@fedify/solidstart] | [npm][npm:@fedify/solidstart] | SolidStart integration | | [@fedify/sqlite](/packages/sqlite/) | [JSR][jsr:@fedify/sqlite] | [npm][npm:@fedify/sqlite] | SQLite driver | | [@fedify/sveltekit](/packages/sveltekit/) | [JSR][jsr:@fedify/sveltekit] | [npm][npm:@fedify/sveltekit] | SvelteKit integration | | [@fedify/testing](/packages/testing/) | [JSR][jsr:@fedify/testing] | [npm][npm:@fedify/testing] | Testing utilities | | [@fedify/vocab](/packages/vocab/) | [JSR][jsr:@fedify/vocab] | [npm][npm:@fedify/vocab] | Activity Vocabulary library | | [@fedify/vocab-runtime](/packages/vocab-runtime/) | [JSR][jsr:@fedify/vocab-runtime] | [npm][npm:@fedify/vocab-runtime] | Runtime library for code-generated vocab | | [@fedify/vocab-tools](/packages/vocab-tools/) | [JSR][jsr:@fedify/vocab-tools] | [npm][npm:@fedify/vocab-tools] | Code generation tools for Activity Vocab | | [@fedify/webfinger](/packages/webfinger/) | [JSR][jsr:@fedify/webfinger] | [npm][npm:@fedify/webfinger] | WebFinger client library for ActivityPub | [jsr:@fedify/cli]: https://jsr.io/@fedify/cli [npm:@fedify/cli]: https://www.npmjs.com/package/@fedify/cli [npm:@fedify/create]: https://www.npmjs.com/package/@fedify/create [jsr:@fedify/amqp]: https://jsr.io/@fedify/amqp [npm:@fedify/amqp]: https://www.npmjs.com/package/@fedify/amqp [jsr:@fedify/astro]: https://jsr.io/@fedify/astro [npm:@fedify/astro]: https://www.npmjs.com/package/@fedify/astro [jsr:@fedify/cfworkers]: https://jsr.io/@fedify/cfworkers [npm:@fedify/cfworkers]: https://www.npmjs.com/package/@fedify/cfworkers [jsr:@fedify/debugger]: https://jsr.io/@fedify/debugger [npm:@fedify/debugger]: https://www.npmjs.com/package/@fedify/debugger [jsr:@fedify/denokv]: https://jsr.io/@fedify/denokv [npm:@fedify/elysia]: https://www.npmjs.com/package/@fedify/elysia [jsr:@fedify/express]: https://jsr.io/@fedify/express [npm:@fedify/express]: https://www.npmjs.com/package/@fedify/express [jsr:@fedify/fastify]: https://jsr.io/@fedify/fastify [npm:@fedify/fastify]: https://www.npmjs.com/package/@fedify/fastify [jsr:@fedify/fresh]: https://jsr.io/@fedify/fresh [jsr:@fedify/h3]: https://jsr.io/@fedify/h3 [npm:@fedify/h3]: https://www.npmjs.com/package/@fedify/h3 [jsr:@fedify/hono]: https://jsr.io/@fedify/hono [npm:@fedify/hono]: https://www.npmjs.com/package/@fedify/hono [jsr:@fedify/init]: https://jsr.io/@fedify/init [npm:@fedify/init]: https://www.npmjs.com/package/@fedify/init [jsr:@fedify/koa]: https://jsr.io/@fedify/koa [npm:@fedify/koa]: https://www.npmjs.com/package/@fedify/koa [jsr:@fedify/lint]: https://jsr.io/@fedify/lint [npm:@fedify/lint]: https://www.npmjs.com/package/@fedify/lint [npm:@fedify/nestjs]: https://www.npmjs.com/package/@fedify/nestjs [npm:@fedify/next]: https://www.npmjs.com/package/@fedify/next [jsr:@fedify/nuxt]: https://jsr.io/@fedify/nuxt [npm:@fedify/nuxt]: https://www.npmjs.com/package/@fedify/nuxt [jsr:@fedify/mysql]: https://jsr.io/@fedify/mysql [npm:@fedify/mysql]: https://www.npmjs.com/package/@fedify/mysql [jsr:@fedify/postgres]: https://jsr.io/@fedify/postgres [npm:@fedify/postgres]: https://www.npmjs.com/package/@fedify/postgres [jsr:@fedify/redis]: https://jsr.io/@fedify/redis [npm:@fedify/redis]: https://www.npmjs.com/package/@fedify/redis [jsr:@fedify/relay]: https://jsr.io/@fedify/relay [npm:@fedify/relay]: https://www.npmjs.com/package/@fedify/relay [jsr:@fedify/solidstart]: https://jsr.io/@fedify/solidstart [npm:@fedify/solidstart]: https://www.npmjs.com/package/@fedify/solidstart [jsr:@fedify/sqlite]: https://jsr.io/@fedify/sqlite [npm:@fedify/sqlite]: https://www.npmjs.com/package/@fedify/sqlite [jsr:@fedify/sveltekit]: https://jsr.io/@fedify/sveltekit [npm:@fedify/sveltekit]: https://www.npmjs.com/package/@fedify/sveltekit [jsr:@fedify/testing]: https://jsr.io/@fedify/testing [npm:@fedify/testing]: https://www.npmjs.com/package/@fedify/testing [jsr:@fedify/vocab]: https://jsr.io/@fedify/vocab [npm:@fedify/vocab]: https://www.npmjs.com/package/@fedify/vocab [jsr:@fedify/vocab-runtime]: https://jsr.io/@fedify/vocab-runtime [npm:@fedify/vocab-runtime]: https://www.npmjs.com/package/@fedify/vocab-runtime [jsr:@fedify/vocab-tools]: https://jsr.io/@fedify/vocab-tools [npm:@fedify/vocab-tools]: https://www.npmjs.com/package/@fedify/vocab-tools [jsr:@fedify/webfinger]: https://jsr.io/@fedify/webfinger [npm:@fedify/webfinger]: https://www.npmjs.com/package/@fedify/webfinger Sponsors -------- This project exists thanks to all the people who contribute, donate, and sponsor it. We are grateful for their support. We would like to thank the following financial contributors:[^2] [^2]: Those lists are automatically updated every hour. <!-- hongdown-disable --> <!-- cSpell: disable --> <!-- DO NOT EDIT(h3): this section is automatically generated by the script --> ### Corporate sponsors - [<img src="https://images.opencollective.com/ghost/avatar/128.png" width="64" height="64"> Ghost](https://ghost.org) ### Supporters - [Daniel Supernault](https://pixelfed.org/) - [tkgka](https://opencollective.com/tkgka) - [Blaine](https://opencollective.com/blaine) - [Erick González Aguilar](https://opencollective.com/erick-gonzalez-aguilar) ### Backers Robin Riley, yamanoku, Encyclia, taye, okin, Andy Piper, box464, Evan Prodromou, Rafael Goulart, malte ### One-time donations Robin Riley, Markus P, Nils Bergmann, Rameez <!-- /DO NOT EDIT --> <!-- cSpell: enable --> <!-- hongdown-enable --> ### Become a sponsor We welcome financial contributions to help us maintain and improve this project. If you would like to become a financial contributor, please visit our [Open Collective]. [Open Collective]: https://opencollective.com/fedify