All Projects → assemblee-virtuelle → activitypods

assemblee-virtuelle / activitypods

Licence: Apache-2.0 license
Brings together two game-changing technologies, ActivityPub and Solid Pods, and empowers developers to create truly decentralized applications

Programming Languages

javascript
184084 projects - #8 most used programming language
Astro
20 projects
CSS
56736 projects

Projects that are alternatives of or similar to activitypods

Coroutines Flows Modularised
Clean Architecture Modular Project: MVVM + Coroutines+ Flows + Dagger2 + LiveData + UnitTests + UITests + MockWebServer
Stars: ✭ 166 (+219.23%)
Mutual labels:  solid
Alsatian
TypeScript testing framework with test cases
Stars: ✭ 244 (+369.23%)
Mutual labels:  solid
Solid
.NET apps done SOLID way
Stars: ✭ 18 (-65.38%)
Mutual labels:  solid
Solid Tutorial Intro
Introductory tutorial to Solid
Stars: ✭ 177 (+240.38%)
Mutual labels:  solid
Dotnet New Caju
Learn Clean Architecture with .NET Core 3.0 🔥
Stars: ✭ 228 (+338.46%)
Mutual labels:  solid
guide
WIP - ActivityPub Guide
Stars: ✭ 25 (-51.92%)
Mutual labels:  activitypub
Interviews
A list of fancy questions I've been asked during the interviews I had. Some of them I ask when interviewing people.
Stars: ✭ 140 (+169.23%)
Mutual labels:  solid
composing-go-example
Project example demonstrating interface segregation in go
Stars: ✭ 21 (-59.62%)
Mutual labels:  solid
Solid Apps
A list of Solid apps
Stars: ✭ 230 (+342.31%)
Mutual labels:  solid
Unmockable
💉 ↪️ 🎁 Unmockable objects wrapping in .NET
Stars: ✭ 35 (-32.69%)
Mutual labels:  solid
Solid Principles
SOLID Principles - simple and easy explanation
Stars: ✭ 180 (+246.15%)
Mutual labels:  solid
Dntframeworkcore
Lightweight and Extensible Infrastructure for Building Web Applications - Web Application Framework
Stars: ✭ 208 (+300%)
Mutual labels:  solid
cherrypick
🌎 A interplanetary communication platform 🚀
Stars: ✭ 40 (-23.08%)
Mutual labels:  activitypub
Architecture
.NET 6, ASP.NET Core 6, Entity Framework Core 6, C# 10, Angular 13, Clean Code, SOLID, DDD.
Stars: ✭ 2,285 (+4294.23%)
Mutual labels:  solid
soundstorm
The Federated Social Audio Platform
Stars: ✭ 26 (-50%)
Mutual labels:  activitypub
Event Sourcing Jambo
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)
Stars: ✭ 159 (+205.77%)
Mutual labels:  solid
Authing
🔥Authing - IDaaS/IAM solution that can Auth to web and mobile applications.
Stars: ✭ 247 (+375%)
Mutual labels:  solid
clean architecture typescript example
This repository provides an implementation (or at least an attempt) of Uncle Bob's Clean Architecture with Typescript.
Stars: ✭ 78 (+50%)
Mutual labels:  solid
finance-project-ddd
Projeto financeiro usando domain driven design, tdd, arquitetura hexagonal e solid
Stars: ✭ 67 (+28.85%)
Mutual labels:  solid
understory.garden
Understory is a digital garden, a micro-publishing space for you to plant the seeds of your ideas and grow them into bi-directionally linked web portals. It's a social zettelkasten that lets users use Web Monetization to get paid when people spend time with their content.
Stars: ✭ 27 (-48.08%)
Mutual labels:  solid

SemApps Chat

activitypods-small

ActivityPods

Check out our website or these slides (french version) for more information about this project !

Frontends using ActivityPods

Pods providers

Available bots

Utilities

Getting started

Launch the triple store

docker-compose up -d fuseki

Launch the boilerplate

yarn install
yarn run bootstrap
cd boilerplate
yarn run dev

Launch the frontend

cd frontend
yarn install
yarn start

Quick guide

Create an actor with a POD

POST /auth/signup HTTP/1.1
Host: localhost:3000
Content-Type: application/json

{
    "name": "Alice",
    "username": "alice",
    "email": "[email protected]",
    "password": "test"
}

This will create an ActivityPub actor on http://localhost:3000/alice (viewable by everyone) and a Solid POD on http://localhost:3000/alice/data.

You will receive in return a JWT token to authenticate the newly-created user on subsequent requests.

{
    "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "webId": "http://localhost:3000/alice",
    "newUser": true
}

If you need to login again with the same user, you can use the /auth/login endpoint with the username and password.

Post a resource in a container

Upon actor creation, several LDP containers have been automatically created on the http://localhost:3000/alice/data POD: /profiles, /events, /places.

You can now post an event on the /events container, following the LDP specification.

POST /alice/data/events HTTP/1.1
Host: localhost:3000
Content-Type: application/ld+json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

{
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Event",
    "name": "Birthday party !"
}

The URL of the newly-created event will be returned in the Location header of the response.

Location: http://localhost:3000/alice/data/events/61a0f897e5b88b06f85b1190
Link: <http://www.w3.org/ns/ldp#Resource>; rel="type"

By default, this event is only visible by yourself (you can do a GET with the JWT token).

Post an activity in the outbox

The created actor has everything needed to exchange with other ActivityPub actors.

You can announce the new event using the ActivityPub outbox:

POST /alice/outbox HTTP/1.1
Host: localhost:3000
Content-Type: application/ld+json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

{
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Announce",
    "actor": "http://localhost:3000/alice",
    "object": "http://localhost:3000/alice/data/events/61a0f897e5b88b06f85b1190",
    "to": "https://www.w3.org/ns/activitystreams#Public"
}

Since this activity is public, anyone will be able to view it on the outbox. But you could of course have sent it only to selected users, in which case it will have been sent to their inboxes.

GET /alice/outbox?page=1 HTTP/1.1
Host: localhost:3000
Accept: application/ld+json

{
    "@context": "http://localhost:3000/_system/context.json",
    "id": "http://localhost:3000/alice/outbox?page=1",
    "type": "OrderedCollectionPage",
    "partOf": "http://localhost:3000/alice/outbox",
    "orderedItems": [{
        "id": "http://localhost:3000/alice/data/activities/61b72a9cc7ff2f4bbb85606b",
        "type": "Announce",
        "actor": "http://localhost:3000/alice",
        "object": "http://localhost:3000/alice/data/events/61a0f897e5b88b06f85b1190",
        "published": "2021-12-13T11:12:28.943Z",
        "to": "as:Public"
    }],
    "totalItems": 1
}

Linking to SemApps packages

To modify packages on the SemApps repository and see the changes before they are published, we recommend to use yarn link.

Linking middleware packages

cd /SEMAPPS_REPO/src/middleware
yarn run link-all
cd /ACTIVITYPODS_REPO
yarn run link-semapps-packages

Linking frontend packages

cd /SEMAPPS_REPO/src/frontend
yarn run link-all
cd /ARCHIPELAGO_REPO/frontend
yarn run link-semapps-packages

Additionally, frontend packages need to be rebuilt, or your changes will not be taken into account by Archipelago. You can use yarn run build to build a package once, or yarn run dev to rebuild a package on every change.

Deployment to production

Follow the guide here.

Integration tests

yarn install
yarn run bootstrap
docker-compose up -d fuseki_test
cd tests
yarn run test
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].