A single page ReactJS based ActivityPub Client.
- JavaScript 97.4%
- HTML 2.5%
- Shell 0.1%
| assets | Add pictures | |
| cosmos | Enabling displaying conversations from an archive | |
| local | Serving stuff | |
| src | display fetch replies if no replies property | |
| .gitignore | Serving stuff | |
| babel.config.json | Initial commit | |
| cosmos.config.json | More cleanup | |
| index.html | Initial commit | |
| LICENSE | More management stuff | |
| package-lock.json | Add ability to fetch all replies | |
| package.json | Add ability to fetch all replies | |
| README.md | Navigation refactoring | |
| server.js | Initial commit | |
buffalo
Buffalo is an attempt to write a ReactJS ActivityPub Client. One should note that it was developed to make bovine usable and fun to use. The main features include:
- Lots of bugs for interested people to fix.
- No authentication. It is assumed to be handled by the server elsewhere through cookies.
- The actor object containing the urls to query is stored in
window.config. - Filtering eliminating uninteresting stuff, e.g. Announce activities are replaced by the announced object, an object is only shown once. Similarly, only likes of own objects are shown. Announce of own objects are shown. Deletes are not shown.
- Conversation view. A post is alwasys shown with its full known context. Entries already seen are collapsed. If the post being replied to is unknown, it is being fetched.
- Basic functionality to author and reply. Support for images is missing (also in bovine).
- Next conversation can be opened by swiping left.
- todo: swiping right or a button opens the previous conversation.
- todo: full support for addressing, i.e. to, cc, bto, bcc
- todo: can edit the raw json of an object
- todo: displays create / update
- todo: fetch FediVerse handle (can probably part of the proxyUrl method in bovine)
- todo: administer followers, following
- todo: make work fully offline, i.e. better reconnect behavior of EventSource + queue for posts
- todo: enable local development
- todo: rich typing, e.g. automatically turn
@helgeinto a mention of me, similarly for hashtags. One might want some hashtag support in bovine for this, e.g. creating some sort of page displaying stuff with a certain hashtag. - todo: markdown preview
- todo: other formatting support ... I'm sure somebody will want to post restructed text or latex
Development
Development assumes you are able to configure a BovineClient.
npm run watch
starts watching for js changes.
cd local
poetry install
poetry run python -m bovine_proxy.local secret
starts a webserver of port 8000 that proxies the configured bovine Actor through BovineClient.
Screenshot
Technology stack
- ReactJS with MUI Components for most of the interface
- dexiejs as an IndexedDB wrapper
- esbuild as a build tool