# Fedify
> ActivityPub server framework
A TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse
## Table of Contents
### Tutorials
- [Learning the basics of Fedify](/tutorial/basics.md): This tutorial provides a step-by-step guide to building a small federated server with the Fedify framework. It is intended for developers who want to build a federated server with the Fedify framework.
- [Creating your own federated microblog](/tutorial/microblog.md): In this tutorial, we will build a small microblog that implements the ActivityPub protocol, similar to Mastodon or Misskey, using Fedify, an ActivityPub server framework.
- [Creating a federated image sharing service](/tutorial/content-sharing.md): In this tutorial, we will build a small Pixelfed-style federated image sharing service on top of Nuxt and Fedify, an ActivityPub server framework. The focus is on learning Fedify rather than Nuxt, and the result will federate with Mastodon, Pixelfed, and any other ActivityPub software.
- [Building a federated blog](/tutorial/astro-blog.md): In this tutorial, we will build a federated blog that uses Astro to serve blog posts from Markdown content and Fedify for ActivityPub federation, allowing blog posts to be delivered to followers across the fediverse.
- [Building a threadiverse community platform](/tutorial/threadiverse.md): In this tutorial, we will build a small threadiverse-style community platform that federates with Lemmy, Mbin, and NodeBB using Fedify and Next.js.
### Manual
- [Federation](/manual/federation.md): The Federation object is the main entry point of the Fedify library. This section explains the key features of the Federation object.
- [Context](/manual/context.md): The Context object is a container that holds the information of the current request. This section explains the key features of the Context object.
- [Advanced context helpers](/manual/context-advanced.md): The Context object exposes a rich set of methods beyond URI building. This guide gathers the advanced Context helpers—URI parsing, manual activity routing, signature introspection, authenticated fetching, and remote lookups—in one place so you can discover them without hunting across multiple pages.
- [Vocabulary](/manual/vocab.md): 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.
- [Actor dispatcher](/manual/actor.md): You can register an actor dispatcher so that Fedify can dispatch an appropriate actor by its identifier. This section explains how to register an actor dispatcher and the key properties of an actor.
- [Inbox listeners](/manual/inbox.md): Fedify provides a way to register inbox listeners so that you can handle incoming activities from other actors. This section explains how to register an inbox listener and how to handle errors.
- [Outbox listeners](/manual/outbox.md): Fedify provides a way to register outbox listeners so that you can handle client-to-server `POST` requests to actor outboxes. This section explains how to register an outbox listener and how to federate posted activities.
- [Sending activities](/manual/send.md): Fedify provides a way to send activities to other actors' inboxes. This section explains how to send activities to others.
- [Collections](/manual/collections.md): Fedify provides a generic way to construct and handle collections. This section explains how to work with collections in Fedify.
- [Object dispatcher](/manual/object.md): You can register an object dispatcher so that Fedify can dispatch an appropriate object by its class and URL arguments. This section explains how to register an object dispatcher.
- [Access control](/manual/access-control.md): Fedify provides a flexible access control system that allows you to control who can access your resources. This section explains how to use the access control system.
- [WebFinger](/manual/webfinger.md): WebFinger is a protocol that allows for the discovery of information about people and other entities on the Internet using just their identifier. This section explains how to implement WebFinger endpoints and use the WebFinger client in Fedify.
- [NodeInfo](/manual/nodeinfo.md): According to the official NodeInfo website, NodeInfo is an effort to create a standardized way of exposing metadata about a server running one of the distributed social networks. This section explains how to expose a NodeInfo endpoint and the key properties of a NodeInfo object.
- [URI Template](/manual/uri-template.md): Fedify uses RFC 6570 URI Templates for routing. This guide explains the different URI Template expansion types and when to use each one.
- [Pragmatics](/manual/pragmatics.md): 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.
- [Key–value store](/manual/kv.md)
- [Message queue](/manual/mq.md)
- [Integration](/manual/integration.md): Fedify is designed to be used together with web frameworks. This document explains how to integrate Fedify with web frameworks.
- [Migrating from other libraries](/manual/migrate.md): How to migrate an existing federated service to Fedify from another JavaScript ActivityPub library: activitypub-express, @activity-kit, hand-rolled Express code, and activitystrea.ms.
- [Relay](/manual/relay.md): Fedify provides a ready-to-use relay server implementation for building ActivityPub relay infrastructure.
- [Testing](/manual/test.md): Testing a federated server app is a bit tricky because it requires a federated environment. This document explains how to easily test your federated server app with the help of several tools.
- [Debugging](/manual/debug.md): The @fedify/debugger package provides an embedded real-time debug dashboard for inspecting ActivityPub traces and activities in your federated server app.
- [Linting](/manual/lint.md): Fedify provides linting plugins for Deno Lint and ESLint to help you catch common mistakes and enforce best practices when building federated server apps.
- [Logging](/manual/log.md): Logging is a useful tool for debugging your federated server app. This section explains how to enable logging in your federated server app.
- [OpenTelemetry](/manual/opentelemetry.md): OpenTelemetry is a set of APIs, libraries, agents, and instrumentation to provide observability to your applications. Fedify supports OpenTelemetry for tracing. This document explains how to use OpenTelemetry with Fedify.
- [Deployment](/manual/deploy.md): A production deployment guide for Fedify applications. Covers runtime selection, reverse proxies, persistent backends, container and traditional deployments, serverless platforms, security, observability, and the ActivityPub-specific operational concerns that general web-app deployment guides don't cover.
### Other
- [Fedify docs](/README.md)
- [Tutorial](/tutorial.md)