Skip to content

Contributing ​

Branches ​

text
feature branch ──MR──▶ develop ──MR──▶ main ──tag vX.Y.Z──▶ release
  • Work on a feature branch, and open a merge request into develop.
  • develop collects finished work. Its builds are published as prereleases on the develop channel.
  • When develop is ready, it's merged into main, and a vX.Y.Z tag on main makes a release.

A good merge request ​

  • Keep it to one change, with tests that cover it.
  • Change contracts in the SDK first. A new API shape or socket event goes in sdk/src/types/, then the backend, then the apps. See Project structure.
  • Add a migration for any schema change.
  • Give every new endpoint its checks: sign-in, rate limits, membership and permissions.
  • Run the checks for the packages you touched (see Checks & tests). CI runs them too.
  • Format only what you changed. yarn ready and yarn format:write rewrite every file in a package.

Style ​

  • Prettier settles formatting: double quotes, semicolons, trailing commas, 120-character lines, 2-space indents.
  • Comments explain why something is done, at the density of the code around them.
  • In the web app, use the theme's tokens rather than hard-coded colours, and the shared UI components in src/components/ui/.

Licence ​

Refract.Chat is licensed under the GNU Affero General Public License v3.0 or later, and the SDK (sdk/) under the MIT licence so that bots and integrations built on it can use any licence. If you run a modified version for others, the AGPL requires you to offer them its source: set config.sourceCodeUrl in app.config.yaml to where your version's source is, and the apps link to it.

Contributions are made under the contributor terms, which you agree to by signing off each commit (git commit -s). The name, logo and Beam are covered by the trademark policy.

Released under the GNU Affero General Public License v3.0.