Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuforium/api
Yuforium API - ActivityPub Server
https://github.com/yuforium/api
activitypub activitypub-federation activitypub-server federation nestjs nodejs typescript
Last synced: about 1 month ago
JSON representation
Yuforium API - ActivityPub Server
- Host: GitHub
- URL: https://github.com/yuforium/api
- Owner: yuforium
- License: gpl-3.0
- Created: 2019-08-31T04:21:45.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-04-11T09:37:31.000Z (9 months ago)
- Last Synced: 2024-04-13T14:54:53.672Z (9 months ago)
- Topics: activitypub, activitypub-federation, activitypub-server, federation, nestjs, nodejs, typescript
- Language: TypeScript
- Homepage:
- Size: 3.62 MB
- Stars: 10
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Yuforium API
_Yuforium is a federated community platform based on Activity Pub_The Yuforium API and [UI](https://github.com/yuforium/ui) are currently deployed to [Yuforia.com](https://www.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.
## App Structure
The Yuforium API is built using the [NestJS framework](https://nestjs.com), and all Yuforium API code has been organized into modules in `src/modules`.### Data 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.### Other Modules
* **ActivityPub** handles server-to-server communication
* **Auth** handles user authentication
* **WellKnown** handles all `/.well-known` such as webfinger which are required for ActivityPub## About
This API is designed to implement a [proposed community standard for Activity Pub](https://github.com/yuforium/activitypub-docs/blob/main/federation.md). This project also uses the [Activity Streams](https://github.com/yuforium/activity-streams) package and has a [separate UI project](https://github.com/yuforium/ui) written in Angular.