Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ mise.local.toml
node_modules/
packages/*/dist/
packages/drfed/completions/
docs/.vitepress/cache/
docs/.vitepress/dist/
docs/.vitepress/.temp/

Comment thread
dahlia marked this conversation as resolved.
index.db

Expand Down
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,14 @@ Install the latest successful development build with
stable `latest` channel. Tagged prereleases use `next`. See
[the contributor release guide](./CONTRIBUTING.md#automated-npm-and-github-releases)
for verification, setup, and recovery procedures.


Documentation
-------------

The documentation site lives in *docs/* and uses [VitePress]. After
`mise install`, run `mise run dev:docs` to start it locally. Run
`mise run build:docs` to build the static site and `mise run preview:docs` to
preview the result.

[VitePress]: https://vitepress.dev/
75 changes: 75 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// DrFed: A web-based platform for developing and debugging ActivityPub apps
// Copyright (C) 2026 DrFed team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

import { defineConfig } from "vitepress";

export default defineConfig({
lang: "en-US",
title: "DrFed",
description:
"Documentation for DrFed, a web-based platform for developing and debugging ActivityPub apps.",
head: [["link", { rel: "icon", type: "image/svg+xml", href: "/icon.svg" }]],
themeConfig: {
logo: { src: "/icon.svg", alt: "" },
nav: [
{ text: "What is DrFed?", link: "/what-is-drfed" },
{ text: "Installation", link: "/installation/manual-installation" },
Comment thread
dahlia marked this conversation as resolved.
{ text: "Manual", link: "/manual/self-hosting" },
{ text: "CLI reference", link: "/reference/cli" },
],
sidebar: [
{
text: "Introduction",
items: [{ text: "What is DrFed?", link: "/what-is-drfed" }],
},
{
text: "Installation",
items: [
{
text: "Run from source",
link: "/installation/run-from-source",
},
{
text: "Manual installation",
link: "/installation/manual-installation",
},
],
},
{
text: "Manual",
items: [
{ text: "Self-hosting", link: "/manual/self-hosting" },
{ text: "Configuration", link: "/manual/configuration" },
],
},
{
text: "Reference",
items: [{ text: "CLI", link: "/reference/cli" }],
},
],
search: { provider: "local" },
socialLinks: [
{ icon: "github", link: "https://github.com/fedify-dev/drfed" },
],
editLink: {
pattern: "https://github.com/fedify-dev/drfed/edit/main/docs/:path",
},
footer: {
message: "Licensed under the GNU AGPL v3 or later.",
copyright: "Copyright © 2026 DrFed team",
},
},
});
165 changes: 165 additions & 0 deletions docs/.vitepress/theme/custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
/*
DrFed: A web-based platform for developing and debugging ActivityPub apps
Copyright (C) 2026 DrFed team

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

:root {
--vp-font-family-base: system-ui, -apple-system, "Segoe UI", sans-serif;
--vp-font-family-mono:
ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
--drfed-font-serif: Georgia, "Times New Roman", serif;

--vp-c-bg: #fdfcfb;
--vp-c-bg-alt: #f4f2f0;
--vp-c-bg-elv: #ffffff;
--vp-c-bg-soft: #f5f3f1;
--vp-c-text-1: #26211f;
--vp-c-text-2: #6a615c;
--vp-c-text-3: #756b65;
--vp-c-divider: #e9e5e1;
--vp-c-border: #dad4cf;
--vp-c-gutter: #e9e5e1;
--vp-c-brand-1: #b83254;
--vp-c-brand-2: #c23a5c;
--vp-c-brand-3: #b83254;
--vp-c-brand-soft: #f7e3e7;
--vp-c-default-1: #dad4cf;
--vp-c-default-2: #e9e5e1;
--vp-c-default-3: #f4f2f0;
--vp-c-default-soft: #f4f2f0;

--vp-home-hero-name-color: var(--vp-c-brand-1);
--vp-button-alt-border: var(--vp-c-border);
--vp-button-alt-hover-border: var(--vp-c-brand-1);
--vp-nav-height: 68px;
}

.dark {
--vp-c-bg: #181613;
--vp-c-bg-alt: #1e1b17;
--vp-c-bg-elv: #201d19;
--vp-c-bg-soft: #272420;
--vp-c-text-1: #f0ece8;
--vp-c-text-2: #bab1aa;
--vp-c-text-3: #a39990;
--vp-c-divider: #332f2a;
--vp-c-border: #453f39;
--vp-c-gutter: #332f2a;
--vp-c-brand-1: #f78da4;
--vp-c-brand-2: #ef6a88;
--vp-c-brand-3: #f78da4;
--vp-c-brand-soft: #322a27;
--vp-c-default-1: #453f39;
--vp-c-default-2: #332f2a;
--vp-c-default-3: #272420;
--vp-c-default-soft: #272420;
--vp-button-brand-text: #26211f;
--vp-button-brand-hover-text: #26211f;
--vp-button-brand-active-text: #26211f;
}

.VPNavBarTitle .title {
font-family: var(--drfed-font-serif);
font-size: 24px;
letter-spacing: -0.03em;
}

.VPNavBarTitle .logo {
height: 32px;
border-radius: 50%;
}

.VPHero .name {
font-family: var(--vp-font-family-mono);
font-size: 14px;
font-weight: 500;
letter-spacing: 0.14em;
line-height: 1.6;
text-transform: uppercase;
}

.VPHero .text {
margin-top: 20px;
max-width: 760px;
font-family: var(--drfed-font-serif);
font-size: clamp(40px, 5.5vw, 72px);
font-weight: 400;
letter-spacing: -0.045em;
line-height: 1.08;
}

.VPHero .tagline {
max-width: 540px;
padding-top: 24px;
font-size: 18px;
line-height: 1.65;
}

.VPButton {
border-radius: 999px;
}

.VPFeature {
border-color: var(--vp-c-divider);
border-radius: 14px;
background: var(--vp-c-bg-elv);
}

.VPFeature .title {
font-family: var(--drfed-font-serif);
font-size: 22px;
font-weight: 400;
letter-spacing: -0.02em;
}

.VPFeature .details {
margin-top: 8px;
line-height: 1.7;
}

.vp-doc h1,
.vp-doc h2 {
font-family: var(--drfed-font-serif);
font-weight: 400;
letter-spacing: -0.025em;
}

.vp-doc h1 {
font-size: clamp(34px, 4vw, 44px);
line-height: 1.15;
}

.vp-doc h2 {
font-size: 28px;
}

.vp-doc p,
.vp-doc li {
line-height: 1.75;
}

.vp-doc div[class*="language-"] {
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
}

.VPSidebarItem.is-active > .item .link > .text {
font-weight: 700;
}

.VPFooter {
background: var(--vp-c-bg-alt);
}
21 changes: 21 additions & 0 deletions docs/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// DrFed: A web-based platform for developing and debugging ActivityPub apps
// Copyright (C) 2026 DrFed team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

import DefaultTheme from "vitepress/theme-without-fonts";

import "./custom.css";

export default DefaultTheme;
22 changes: 22 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
layout: home

hero:
name: ActivityPub Debugging Platform
text: Debugging tools for the fediverse.
tagline: DrFed is a web-based platform for developing and debugging ActivityPub implementations—inspecting objects and activities, and tracing where federation fails. It is built by the team behind Fedify.
actions:
- theme: brand
text: Install
link: /installation/manual-installation
- theme: alt
text: View on GitHub
link: https://github.com/fedify-dev/drfed

features:
- title: Contribute to DrFed
details: Find package boundaries, coding conventions, and required checks.
link: https://github.com/fedify-dev/drfed/blob/main/CONTRIBUTING.md
linkText: Contributor guide
---

66 changes: 66 additions & 0 deletions docs/installation/manual-installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
Manual installation
===================

Run DrFed on your own server to develop and debug ActivityPub apps.
Comment thread
sij411 marked this conversation as resolved.


Install from npm
----------------

Install Node.js 26 or newer, then install [DrFed from npm] in a directory
where you want to run it:

~~~~ sh
npm install @drfed/drfed
~~~~

The package provides `drfed-server`, `drfed-account`, `drfed-migrate`, and
`drfed-web`. Use `npx` to run these commands from the installation directory.

[DrFed from npm]: https://www.npmjs.com/package/@drfed/drfed


Create an account and start DrFed
---------------------------------

Create your account before starting the server:

~~~~ sh
npx drfed-account create --data-path .pgdata \
--email alice@example.com --name "Alice"
~~~~

Replace the email address and display name with your own. The command prepares
the database in *.pgdata/*. Start DrFed with the same data directory:

~~~~ sh
npx drfed-server --root-origin http://drfed.localhost:8888 \
--data-path .pgdata --mail-log-content
~~~~

Open `http://drfed.localhost:8888` and sign in with your email address. This
local example prints the login link in the server log. Follow it to finish
signing in. The server includes the web frontend and stores your data in
*.pgdata/*. Press `Ctrl+C` to stop it.

For a public deployment, configure your domain, wildcard DNS for instance
subdomains, HTTPS, and a mail delivery transport. See [Configuration] and
[Self-hosting] for settings, account creation, and database maintenance.

[Configuration]: /manual/configuration
[Self-hosting]: /manual/self-hosting


Other installation options
--------------------------

To make the commands available directly on your `PATH`, install globally:

~~~~ sh
npm install --global @drfed/drfed
~~~~

Then run `drfed-server` and the other commands without `npx`.
To build DrFed yourself, see [Run from source].

[Run from source]: /installation/run-from-source
Loading
Loading