Skip to content

Eriner/burr

Repository files navigation

Burr

Burr is an opinionated WIP federated social networking server.

Quick-start

docker-compose up

Configuration

The config.yaml file defines Burr's configuration.

Frontend

Burr is a backend-only social network server and does not implement a frontend.

Backend

In production, Burr requires on the following external services:

  • Vault for secrets management
  • Faktory for job queuing
  • Postgresql for the database
  • S3 (external) for internet-facing file hosting
  • S3 (internal) for worker-process file mutations
  • Redis for worker cache

For development and very small instances, in-memory and on-disk implementations are included within the app so that it may be run with zero dependencies. However, only the production "stack" of dependencies is supported. Performance issues, instability, race conditions, and other issues are present within the builtin implementation that do not exist within the full production stack.

API

To provide compatibility with existing federated UIs, such as Soapbox, Burr will implement the Mastodon and Pleroma HTTP APIs.

The aim of v1.0 is to implement the Mastodon API.

v1.1 will implement the Pleroma API.

v1.2 will implement a GraphQL API so that new frontends can be created more easily.

Due to deficiencies and the W3C's abandonment of the spec, this project does not seek to implement the C2S ActivityPub spec at this time.

Database

ent is used as the database driver. Multiple database drivers exist, however postgresql is the only supported production database driver.

I've done my best to implement opportunistic locking for sqlite where possible, but for both performance and reliability reasons only postgresql is supported.

Development

Test:

make test

Run:

make run

Build ./burr:

make build

Build (and test) ghcr.io/eriner/burr:latest:

make docker

History

About

Burr is a WIP federated social network server.

Resources

License

Stars

Watchers

Forks

Releases

No releases published