forked from TakeV/hummingbard
cache | ||
client | ||
cmd/hummingbard | ||
config | ||
db/migrations | ||
gomatrix | ||
static/favico | ||
templates | ||
ui | ||
.gitignore | ||
config-sample.toml | ||
go.mod | ||
go.sum | ||
LICENSE | ||
Makefile | ||
README.md |
Hummingbard
Hummingbard is an experimental client for building decentralized communities on top of Matrix. See a live instance on hummingbard.com
What Works
- Register local and federated users
- Federated logins with existing Matrix accounts
- Join local and federated spaces
- Follow local and federated users
- Generic post editor (markdown)
- Quick posts, with images/attachments/links/youtube/etc
- Blog posts with slug/metadata
- Replies to posts
- Sharing posts on profiles and across spaces
- User feed
- Public feed
- Create local and federated spaces
- Different space types - community, gallery
- Customize spaces and user profiles with basic info, custom CSS
- Deeply nested spaces (
/music/jazz/fusion
)
What Doesn't Work
- Private spaces and user profiles
- Embedded chat in spaces
- Direct Messages
- Registration flows
Dendrite
Hummingbard relies on these features that are currently only implemented in Dendrite, or expected to be implemented soon:
There is a temporary patch in our forked Dendrite for paginating threads. This should not be necessary once upstream Dendrite implements threads fully.
Install
To run Hummingbard, you'll need:
- Dendrite fork configured and running
- redis (for session storage)
- postgres (for various non-Matrix storage)
- goose for migrations
Steps:
- Clone the repo
- Copy
config-sample.toml
toconfig.toml
, update with DB config etc. - Run
make
- Run migrations in
db/migrations
- Run
npm run build
in/ui/js
- Pull a JSON dump for large matrix rooms with
curl 'https://matrix-client.matrix.org:443/_matrix/client/r0/publicRooms?limit=500' > bigrooms.json
(we avoid large rooms to help Dendrite not consume too much resources) - Run the binary
./bin/hummingbard
You may want to:
- Put Hummingbard behind Nginx
- Server static files via Nginx
- Use a systemd unit if appropriate
License
The code is currenly licensed under AGPLv3. I may choose a more permissive license in the future.