You're telling me a puppy coded this??
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Riley Apeldoorn 18a13d63f6 Change the project's name 6 months ago
doc Restructure the project 7 months ago
res Restructure the project 7 months ago
sql Accepting follow requests 6 months ago
src Change the project's name 6 months ago
test Change the project's name 6 months ago
.gitignore Add app skeleton 8 months ago
LICENSE Initialize cabal project 8 months ago Change the project's name 6 months ago
activitypuppy.cabal Change the project's name 6 months ago
flake.lock Add flake lockfile 8 months ago
flake.nix Change the project's name 6 months ago
package.nix Change the project's name 6 months ago


Puppy, fetch my posts!

ActivityPuppy is a federated microblogging server designed for small self-organizing and self-moderating groups, collectives and organizations, built on open protocols and mutual trust.

It is primarily intended to serve as a lightweight alternative to Mastodon, Akkoma and various forks of Misskey for small groups of friends/comrades who trust each other to keep their community safe by applying anarchist principles to moderation and administration.

Project goals

ActivitPuppy aims to be an ActivityPub project explicitly incorporating anti-hierarchical, anti-centralization and self-organization practices.

At time of writing, governance of the Mastodon project, which in some ways sets the de facto standards on the microbloggin fediverse, is centralized in such a way that it poses a threat to the safety of many marginalized users on the platform. This project aims to counter this by providing an alternative which takes decentralization as a tactic for preventing abuse seriously, and encourages the creation of many smaller-scale communities as opposed to a few large and hard-to-moderate servers.

Building and running

This project uses Nix and Cabal as build tools. Cabal is used for everyday development tasks such as testing, whereas Nix is used to set up the development environment and package releases.

You can acquire a development shell by running the following command:

nix develop

A development build can be done as such:

cabal build

In order to start a development build of the server, use cabal:

cabal run

Database "migrations"

Before you can do anything with the database, you should set it up using the sqlite3 program:

sqlite3 .state/db.sqlite < sql/0000.up.sql
sqlite3 .state/db.sqlite < sql/0001.up.sql