Expand description
đ Rainbeam!
đ Rainbeam
Rainbeam is a simple Q&A social network designed for community! On Rainbeam, users can create and customize their profile to look how they want, and then other users can ask them questions using their account or an anonymous username. Users receive questions in their inbox and can then answer them or manage them. Users can also ask âglobal questionsâ which everybody who is following them can see in a specialized timeline. Global questions can be answered by any logged-in user. Users can also respond to existing responses with comments to further interact with their friendsâ responses!
§Repository structure
All core packages are contained in the crates/
directory:
crates/builder/
- Client asset builder/bundlercrates/shared/
- Core shared utilitiescrates/langbeam/
- l10n servicecrates/databeam/
- Database connection managercrates/authbeam/
- Authentication backend and API routescrates/citrus/
- Citrus federation protocol client- (v)
crates/rainbeam-core/
- Rainbeam database connection and typescrates/rb/
- Rainbeam Axum routes (API and all pages)crates/rainbeam/
- Rainbeam server binary
Packages labeled with (v)
are version-tied. This means that it and all the packages nested under it in the list share the same crate version.
§Usage
To start, clone the Rainbeam repository and build it:
git clone https://github.com/swmff/rainbeam
cd rainbeam
just build sqlite
Instead of âsqliteâ, you can also use âmysqlâ or âpostgresâ for MySQL/MariaDB and PostgreSQL respectively!
§Configuration
You can configure Rainbeam in the configuration file located at ./.config/config.toml
. This file will be created for you when the server is first run.
§Tier features
You can lock a given set of features behind the tier
column of profiles using the tiers
configuration key.
[tiers]
double_limits = 2
stylish_card = 1
avatar_crown = 1
profile_badge = 1
# ...
The tiers
configuration key contains a map of features where the key is the feature name, and the value is the minimum required tier.
By default, every benefit is at tier 1
.
§hCaptcha
Rainbeam requires hCaptcha to secure logins and registers. You can provide your h-captcha configuration in ./.config/config.toml
:
# ...
[captcha]
site_key = "..."
secret = "..."
You can sign up for an hCaptcha account at https://www.hcaptcha.com/!
§Moderation
After you have created your first account, youâll need to manually create a permissions group in the database so that you can mark the account as a Manager
. The manager permission allows you to delete accounts, responses, comments, and questions. You can also view profile warnings and reports with this permission. You can view an example SQL query to do this here!
You can add additional moderators with the Helper
role. They can also be given Manager
, however Helper
is much better if you want them to have limited moderation abilities.
§Account registration
To open your instance up for free account registration, youâll need to set registration_enabled
to true
in ./.config/config.toml
.
§PWA
You are responsible for adding your own manifest.json
file in the static/
directory.
You can place your PWA logo images in static/images/logo/
. This directory is ignored by git.
§Contributing
You can view information about contributing to Rainbeam here, as well as the contributor code of conduct here!
You can view security information here.
§Attribution
Rainbeam is a faithful recreation of the amazing Q&A site Retrospring. Rainbeam uses many Retrospringâs core concepts, ideas, and designs, however it is built from the ground up and uses none of Retrospringâs original code or assets.
Rainbeam uses Twemoji on its HTML pages for uniform emojis.
Modules§
- Application config manager
Functions§
- Main server process