Gordon Pedersen
6647dabdc8
Needed a little modification here and there to make it work with the activity pub data structure, but it's looking pretty good!
36 lines
2.1 KiB
Markdown
36 lines
2.1 KiB
Markdown
# bun-activitypub
|
|
|
|
This is a basic ActivityPub server written in JavaScript, using [Bun](https://bun.sh).
|
|
It is very much based on [existing work](https://github.com/jakelazaroff/activitypub-starter-kit)
|
|
but has been re-written to work with Bun instead of Node/Express. This is as much about a personal learning experience as anything.
|
|
|
|
In the beginning, this server only supports following/unfollowing (and being followed/unfollowed in return), as well as posting simple notes - which do get sent out to followers.
|
|
|
|
Rather than store data in a database, it currently stores create activity data in json files, and created posts in markdown files with YAML frontmatter for metadata.
|
|
The hope is this will allow me to use something like [11ty](https://www.11ty.dev/) to generate my own website for people to view and interact with my posts in the future.
|
|
I may also experiment with pushing the content to a seperate git repository so I can utilize automated scripts to build and publish the web front-end.
|
|
|
|
## Dependencies
|
|
- Bun has it's own built-in http server, so this project uses that rather than something like Express.
|
|
- It uses [`node-forge`](https://github.com/digitalbazaar/forge) for signing and verifying signed posts, as Bun does not yet implement the required `node:crypto` methods
|
|
- It uses [`gray-matter`](https://github.com/jonschlinkert/gray-matter) for writing and parsing YAML frontmatter in Markdown files
|
|
- It uses [11ty](https://www.11ty.dev/) to compile those Markdown files into a static website
|
|
Note: there is an error with 11ty in Bun, tracked [here](https://github.com/oven-sh/bun/issues/5560). Until there is a fix, there is a workaround:
|
|
`node_modules/graceful-fs/graceful-fs.js:299` — remove the `, this` from the end of the line
|
|
- The [RSS Plugin](https://www.11ty.dev/docs/plugins/rss/) for 11ty is also used to generate RSS feeds of the posts
|
|
|
|
## Development
|
|
|
|
To install dependencies:
|
|
|
|
```bash
|
|
bun install
|
|
```
|
|
|
|
To run:
|
|
|
|
```bash
|
|
bun run start
|
|
```
|
|
|
|
This project was created using `bun init` in bun v1.0.0. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
|