# 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.
- Clone this repository: https://github.com/bazzite/statusfy.
- 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.
# 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:
- Font Awesome: A versatile Icons Set.
- @nuxtjs/axios: Secure and Easy Axios integration for Nuxt.js.
- @nuxtjs/pwa: PWA support for Nuxt.js.
- nuxt-i18n: i18n features for Nuxt.js.
- Express: A Node.js framework.
- vue-multianalytics: a simple plugin that tracks any event in multiple platforms at the same time.
- Tailwind CSS: A Utility-First CSS Framework used by the default theme.
# 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.