An ActivityPub Client that acts like a blog
 
 
 
Go to file
helge 84192d8494
ci/woodpecker/push/test Pipeline was successful Details
Merge pull request 'publishing to pypi' (#4) from helge/longhorn:dev into main
Reviewed-on: #4
2023-06-08 12:34:08 +00:00
.woodpecker publishing to pypi 2023-06-08 14:32:24 +02:00
assets bugfix + updated README.md 2023-04-07 21:02:23 +02:00
docs Document basic behavior 2023-06-08 13:58:01 +02:00
longhorn Document basic behavior 2023-06-08 13:58:01 +02:00
static Document basic behavior 2023-06-08 13:58:01 +02:00
.gitignore Document basic behavior 2023-06-08 13:58:01 +02:00
.readthedocs.yaml Add rtd.yaml 2023-06-08 13:59:05 +02:00
README.md Cleanup project structure 2023-06-08 09:36:05 +02:00
poetry.lock Document basic behavior 2023-06-08 13:58:01 +02:00
pyproject.toml publishing to pypi 2023-06-08 14:32:24 +02:00
setup.cfg First possibly working version 2023-03-12 21:14:25 +01:00

README.md

longhorn

longhorn

Photo by Miguel from Pexels

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