Yuforium is a federated community platform based on Activity Pub
The Yuforium API and UI are currently deployed to Yuforia.com.
Yuforium federates communities so they are not constrained to a single entity, and attempts to federate them in the same way that the Internet is distributed, making communities operate across public exchange points.
The Yuforium API is built using the NestJS framework, and all Yuforium API code has been organized into modules in src/modules
.
Data in Yuforium is stored as ActivityPub objects. Any additional fields that are not part of the ActivityPub specification start with an underscore character. These fields are generally reserved for data operations (such as pointers to other documents).
Yuforium stores data in three collections, with a corresponding modules:
- Activities contain all activities sent or received
- Objects stores the current state of all tracked objects and can be considered a summation of all Activities
- Users contains all user login information. In addition to providing services related to the Users collection, the
UserModule
provides functionality for managing ActivityPub related to a user, such as the Inbox, Outbox, and user related content endpoints.
- ActivityPub handles server-to-server communication
- Auth handles user authentication
- WellKnown handles all
/.well-known
such as webfinger which are required for ActivityPub
This API is designed to implement a proposed community standard for Activity Pub. This project also uses the Activity Streams package and has a separate UI project written in Angular.