Bonfire is an open-source framework for building federated digital spaces where people can gather, interact, and form communities online.
This project is in the beta stage - you're welcome to try out it out (specifically the social features in the classic flavour), but APIs may still change and no guarantees are given about stability. You can keep track of progress in our milestones
- Modular architecture: Bonfire consists of extensions that shape the functionality and user experience of each digital space. Communities can enable or disable these extensions to customize their space according to their needs and vision.
- Extensibility: Developers can create new extensions to expand the capabilities of digital spaces, such as adding new activities or introducing innovative user experiences for existing functions.
- Federation: Bonfire allows digital spaces to connect and communicate with each other, enabling users to interact across different communities while maintaining their unique identities and preferences.
- Flexibility: Whether you're an individual developer or part of a larger team, Bonfire provides a flexible framework for building and customizing digital spaces that cater to a wide range of communities and purposes.
Bonfire empowers developers and communities to create engaging, customizable, and interconnected digital spaces that foster collaboration, creativity, and social interaction online.
This repo includes configurations to run a few main flavours of Bonfire you can choose from:
- Classic for basic social networking (beta)
- Community with groups and topics functionality (alpha)
- Open Science building the next generation of open science platforms (pre-alpha)
- Coordination for organising work and collaborating around projects and tasks (pre-alpha)
- Cooperation for cooperative production, distribution, and exchange of economic resources (pre-alpha)
-
Developers: You'll probably be interested in understanding how to build on Bonfire. The dev setup will guide you through the installation of bonfire on your local machine. In the Just commands page you will gain familiarities with the basic Bonfire CLI commands. From there you may want to continue developing a new extension, or learning more about the internals and the Bonfire architecture.
-
Users: Whether you are a user who is looking for an existing digital place to join, or want to understand more about how Bonfire works and how to get the most out of it, the Community Manual is a good place to start. There you can learn about how to customize your experience, what boundaries are and how to experience a new and safer way to interact with federated social networks.
-
Community organisers & sysadmins: Ready to launch your digital space? We got you covered on our hosting guide.
Bonfire aims to be beginner-friendly, but to keep the documentation focused on the framework's functionalities, we assume a basic understanding of the following technologies:
- Elixir: If you're new to Elixir or need a refresher, start with the Elixir guide.
- Phoenix/LiveView and Surface: Bonfire's official web UI is built with the Surface framework, which itself is based on Phoenix LiveView. If you're unfamiliar with them, check out the Phoenix overview, Phoenix LiveView guide, and Surface docs. You may also be interested in the Phoenix LiveView video course by Pragmatic Studio.
- PostgreSQL: Bonfire uses PostgreSQL as its primary database. Basic knowledge of SQL and PostgreSQL is helpful.
Bonfire also provides a GraphQL API for developers who want to build custom frontends.
Throughout the documentation, we'll make sure to provide links to relevant resources when introducing new concepts to help you along the way. We have a strong affinity for Elixir and believe it's a powerful language for building scalable and maintainable social networks.
If you have questions about anything related to Bonfire, you're always welcome to ask our community on Matrix, Slack, Elixir Forum and the Fediverse or send us an email at [email protected].
Copyright (c) 2020-2024 Bonfire Contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.