Contribution Guide

Statusfy is one of the Bazzite's Open Source Projects that is under very active development. We hope this document makes the process for contributing clear and answers some questions that you may have.

First, you must know that Statusfy relies on three Amazing Technologies:

  • Vue.js: Dynamically defines the interfaces that represent the data.
  • Nuxt.js: A quickly, flexible and useful abstraction of the client and server logic. It also generates/builds the application.
  • Tailwind CSS: A utility CSS framework that defines the styles in a smart way.

Any contribution is more than welcome!

Code of Conduct

We have adopted a Code of Conduct that we expect project participants to adhere to. Please read the full text so that you can understand what actions will and will not be tolerated.

Semantic Versioning

Bazzite follows semantic versioning. We release patch versions for bugfixes, minor versions for new features, and major versions for any breaking changes.

Every significant change is documented in the changelog file.

Reporting Issues

A great way to contribute to the project is to send a detailed report when you encounter an issue. We use the Github Issues section for these reports.

Please make sure to include a reproduction repository. We can start fixing bugs faster if you provide a project for reproduction.

Proposing a Change

Any significant improvement (no matter if it's just to fix a typo) should be associated with a feature request or bug report. If you require Professional Support on your project(s) or want to ask general questions, just go to our Support Page.

Pull Requests

If you intend to add a new feature, we recommend filing an issue. This lets us reach an agreement on your proposal before you put significant effort into it.

Getting started

Install Node.js (8.1 or higher) and Yarn. It's also recommended to install Lerna globally.

  1. Clone this repository: https://github.com/bazzite/statusfy.
  2. Run yarn install to install the dependencies.

TIP

To use @statusfy/cli in the repo as a global command. Enter the ./packages/@statusfy/cli folder and run npm link.

The Statusfy repository is a monorepo with multiple sub-projects/packages. Before sending a pull request, you should know the task of each sub-project bellow.

Testing

A great Pull Request will often include tests. To write great tests, we explain you our testing structure:

Demo

The Demo project uses almost all the Statusfy features and it's used as a starting point for testing. Before running any test, the demo project must be generated/built running yarn run test:demo.

Unit tests

Each sub-project has its own unit tests and they will be executed with Lerna running the command yarn run test.

Testing your Changes

While working on your Pull Request you will likely want to check if your changes are not breaking any existing feature.

To do so, generate/build the demo and run the tests.

yarn run test:demo
yarn run test

Linting

As you might have noticed already, we are using ESLint to enforce a coding standard. Please run yarn lint before committing your changes to fix automatically the style of the code. If there are still errors left, you must correct them manually.

Documentation

If you are adding a new feature, doing a refactoring or changing the behavior of Statusfy in any other manner, you'll likely want to document the changes.

Currently, the documentation is translated into English and Spanish, but you don't have to document the changes in both languages, you just can pick one of them and we take care of the other language.

TIP

You don't have to write documentation up immediately (but please do so as soon as your pull request is mature enough).

Translations

We're open to any contribution that translates the Statusfy core to other languages. Just use as a base language this file and translate the strings. The new file you create must follow this pattern lang-default.json where lang is the identification of the language in a two-letter representation (in ISO 639-1 format) with an optional region (in ISO 3166-1 Alpha 2 format).

Contributor License Agreement (CLA)

In order to accept your pull request, we need you to submit a CLA. You only need to do this once. By signing a contributor license agreement, we ensure that the community is free to use your contributions.

Complete your CLA here.

Final checklist

When submitting your Pull Request, there is a simple template that you have to fill out. Please tick all suitable answers in the checklists.

License

By contributing to Statusfy, you agree that your contributions will be licensed under its Apache 2.0.

Financial Contribution

We love Open Source Projects, we use them every day and Statusfy is our contribution to the Community, but our resources are limited. If you want to support our work and help us to continue developing this Amazing Project, please donate, we will appreciate it ❤️.

Become a Backer, Sponsor or Partner on OpenCollective.

Project Structure

Statusfy is a completely opensource project, its repository is a monorepo with multiple sub-projects/packages located at the ./packages folder.

CLI

CLI for Statusfy

In this project is located the set of useful commands, both for development and production purposes.

Common

Common Utils

It's used for the others internal projects.

Core

The core of Statusfy.

It's a Nuxt.js application and all the Stastufy Magic happens here. We use extra libraries that easily extends some of the Statusfy features:

Editor

The Editor for Statusfy.

IMPORTANT

This editor is not ready yet, it's under development.

Markdown

Markdown Parser for Statusfy.

The Parser that converts all the incidents from Markdown to HTML. We use markdown-it for this task.

Testing Utilities

Test Utils for Statusfy.

Demo

Main Demo for Statusfy.

Documentation

Where the documentation is stored.

The documentation is created in Markdown Files and generated with Vuepress.

Website

Main Website for Statusfy.

It's a simple Nuxt.js application.