2
8
Fork
You've already forked longhorn
1
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
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
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
README.md Cleanup project structure 2023年06月08日 09:36:05 +02:00
setup.cfg First possibly working version 2023年03月12日 21:14:25 +01:00

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