An ActivityPub Client that acts like a blog
- Python 74.1%
- CSS 19.3%
- HTML 6.6%
|
helge
84192d8494
All checks were successful
ci/woodpecker/push/test Pipeline was successful
Reviewed-on: #4 |
||
|---|---|---|
| .woodpecker | publishing to pypi | |
| assets | bugfix + updated README.md | |
| docs | Document basic behavior | |
| longhorn | Document basic behavior | |
| static | Document basic behavior | |
| .gitignore | Document basic behavior | |
| .readthedocs.yaml | Add rtd.yaml | |
| poetry.lock | Document basic behavior | |
| pyproject.toml | publishing to pypi | |
| README.md | Cleanup project structure | |
| setup.cfg | First possibly working version | |
longhorn
longhorn is meant for hosting a single blog associated with a specific ActivityPub actor. Example:
- My blog is available at https://blog.mymath.rocks/
- If you follow me, i.e.
@helge@mymath.rocks. My blog posts will be delivered to your ActivityPub Inbox as a create article. - Public replies to that Article are displayed on the blog.
This is realized by longhorn being a bovine based ActivityPub Client.
Installation
longhorn can be installed by running
pip install longhorn
python -mlonghorn.setup
There you will be prompted for
- The host your blog will run on, e.g.
blog.mymath.rocks - The title of your blog, e.g.
Helge's blog - The host of your ActivityPub server, e.g.
mymath.rocks - And be provided a did-key to add to your ActivityPub Actor following the BIN-2.
The blog can then be run, by running
hypercorn longhorn:app
Usage
Posts are written as markdown then uploaded using
python -mlonghorn.post filename.md
Todos
- Stopping the server is awkward due to the Event Source loop not stopping properly. Investigate how to fix this.
- Alternative to last todo: Separate Event Source into own process.
- Alternative: Use webhooks
- Solution: Move to mechanical bull
- Provide an RSS feed
- Enable a publish / preview endpoint
- Explain how to customize templating without hacking the package
- Support tags and other metadata