bun-activitypub/README.md

37 lines
2.1 KiB
Markdown
Raw Permalink Normal View History

# bun-activitypub
2023-09-16 01:24:47 +00:00
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
2023-09-16 01:24:47 +00:00
## Development
To install dependencies:
```bash
bun install
```
To run:
```bash
2023-09-16 01:24:47 +00:00
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.