A federated groups service built with ActivityPub, enabling decentralized community management and interaction across the fediverse.
Open source, free as in speech and free as in beer.
The flagship instance is at jumbles.zone, and is heavily protective of its users, but we very much encourage you to run your own!
-
Group Management
- Group creation and management
- Profile information editing.
- Extended "home" page detailing group purpose, rules, and other information.
- Permission levels:
- Owner: There can be only one.
- Admin: Can manage group settings and invite/promote users.
- Moderator: Can manage group content and membership.
- Approver: Can approve or reject membership requests.
- Public and private group options
- Public groups are open to follows and have no membership requirements.
- Private groups require application and approval.
- "Approval required" group membership process
- Fediverse users who request to follow are messaged a link to an application form.
- Approvers must approve applications before the follow is accepted.
- Group moderation tools
- All groups (public and private) can be moderated by blocking bad actors.
- Banned users can have all of their content redacted.
- Group creation and management
-
Federation
- ActivityPub protocol support
- Interoperability with other ActivityPub servers
- Supports only group functionality (no personal fediverse users/timelines).
- Users must be registered on an existing (external, federated) instance to participate.
-
Database Support
- Pluggable multi-database architecture
- Currently supported:
- BadgerDB (embedded database)
- Planned support for:
- MongoDB
- PostgreSQL
- MySQL
- Extensible database interface for custom implementations
-
User Features
- Secure authentication system
- BCrypt password hashing
- Session-based login
- Planned support for:
- Passkeys
- OAuth
- WebAuthn
- Profile customization
- Activity feeds
- Notifications
- Content moderation tools
- Secure authentication system
- Go 1.22 or higher
- Node.js 20+ and pnpm
- Clone the repository:
git clone https://github.com/blahaj.zone/jumbles.git
cd jumbles- Install backend dependencies:
go mod download- Install frontend dependencies:
cd ui
pnpm install- Copy the example configuration file and edit it to your liking:
(Note: If you don't do this, the application will create a default configuration file for basic dev/test for you on first run)
cp .env.default .env- Start the backend server:
make dev- In another terminal, start the frontend:
cd ui
npm run dev- Build the frontend:
cd ui
npm run build- Build and start the server:
make build- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Build the application
- Configure your reverse proxy (Caddy, nginx, etc.)
- Set up SSL certificates (if not using Caddy, which supports automatic HTTPS)
- Configure your database
- Start the server
API documentation is in api_documentation.md, also postman.json provides a Postman collection for easy import/testing.
- BYO TLS [via your reverse proxy] no built-in termination
- CORS configuration
- Rate limiting
- Input validation
- XSS protection
- CSRF protection
This project is licensed under the GPLv3 license. Forever and always open source, never commercial.
If you build something on top of this, it must also be open source and licensed under the GPLv3 license.
- ActivityPub federation support
- Accept / Reject followers
- Inbox management:
- Receive notes (dm/post/boost)
- Outbox management:
- Boost notes to followers
- Send direct notes to followers
- Follower management:
- Approve followers (auto and approved)
- Reject followers
- Block followers
- Redact boosted notes from followers
- Group profiles
- WebFinger support
- Database support
- BadgerDB
- MongoDB
- PostgreSQL
- MySQL
- Authentication support
- BCrypt password hashing
- JWT authentication tokens
- OAuth
- WebAuthn
- Passkeys
- Application notifications:
- Pushover
- Discord
- Telegram
- Automated account recovery