An opinionated, practical and useful implementation of the ActivityPub spec
- Fully interoperable with existing ActivityPub implementations (e.g. Mastodon)
- Complete, covering Client to Server and Server to Server
- Well tested
- Vanilla and opinionated
- Includes applied security best practices
- Straightforward to drop in to another node app or bootstrap from
- Full federation support
Running this application will give you an application API that supports all of the standard ActivityPub requirements for a full social app including WebFinger, ActivityPub, ActivityStreams, Actors, Authentication and basic app features. You can then extend or modify this to create pretty much any social application you can think of.
See [some examples](##Try It) of what you can do out of the box.
- node v8.4.0+
- Postgres
- Typescript
- TypeOrm
- Express
- Pino
- Mocha
- Swagger
- ...
- Clone this repo
- Install node, npm and postgres
cd activitypub.js
npm install
- Adjust the
.env
file with your specific defaults. We use some sensible defaults but you can use whatever you like - Don't forget to create a database in postgres (default is
activitypub
)
npm run dev
npm run compile
npm start
npm run test
npm run debug
Then open chrome://inspect/#devices
in Chrome and click on Remote Target
e.g. CloudFoundry
cf push activitypub.js
- Point your browser to http://localhost:3000
- Invoke the example REST endpoint
curl http://localhost:3000/.well-known/webfinger
/.well-known/webfinger?resource=acct:[email protected]