burr

module
v0.0.0-...-34fc03e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 22, 2022 License: AGPL-3.0

README

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

Directories

Path Synopsis
cmd
internal
db
ent
kv
policy
package policy provides functionality used in determining access policies.
package policy provides functionality used in determining access policies.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL