Check out our website or these slides (french version) for more information about this project !
Note: the next version of ActivityPods, currently in alpha stage, is available in the next branch.
- MyPod.store (English)
- Armoise.co (French, Oise area)
- Bocage.me (French, Normandy area)
docker-compose up -d fuseki
yarn install
cd backend
yarn run dev
cd frontend
yarn start
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.
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).
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
}
To modify packages on the SemApps repository and see the changes before they are published on NPM, see the following instructions.
To link backend packages, you can use yarn link
.
cd /SEMAPPS_REPO/src/middleware
yarn run link-all
cd /ACTIVITYPODS_REPO
yarn run link-semapps-packages
Linking frontend packages with yarn link
doesn't work because it causes version mismatch errors for React and MUI (see this PR for explainations). So you should use Yalc instead. Fortunately, we make it easy for you.
cd /SEMAPPS_REPO/src/frontend
yarn run yalc:publish
cd /ACTIVITYPODS_REPO/frontend
yarn run link-semapps-packages
Additionally, frontend packages need to be rebuilt on every changes, or they will not be taken into account by ActivityPods. You can use yarn run build
to build a package once, or yarn run watch
to rebuild a package on every change. On every build, the new package will be published to Yalc.
Thanks to git hooks, the frontend packages will also be published to Yalc whenever git branches are changed.
Follow the guide here.
yarn install
docker-compose up -d fuseki_test
cd tests
yarn run test
This project is funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594. Learn more on the NLnet project page.