Skip to content

Latest commit

 

History

History
111 lines (72 loc) · 6.74 KB

CONTRIBUTING.md

File metadata and controls

111 lines (72 loc) · 6.74 KB

Contributing to Botonic

🙌:tada: First of all, thanks for using Botonic 🤖and taking your time to contribute! :tada:🙌

The following is a set of guidelines for contributing to Botonic and its packages, which are hosted in Hubtype's Botonic project on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. To know more about the company behind Botonic, please refer to https://www.hubtype.com/.

Code of Conduct

This project and everyone participating in it is governed by the Botonic Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to developers@hubtype.com.

I just have questions, suggestions...

If you have any suggestions or just want to let us know what you think of Botonic, feel free to contact us on Slack!

What about Botonic?

Node.js

Botonic is the open source framework developed by Hubtype for building amazing Chatbots for any Platform with React. Botonic is an easy to learn, open-source framework that lets you create powerful conversational interfaces that work on the most popular messaging apps (Whatsapp, Facebook Messenger, Telegram and more), your website or even your native mobile apps (Android/iOS).

Project Structure

Botonic is structured as a monorepo as this allows us to have a simplified organization in modules. Here's a quick explanation:

  • botonic/packages - Here live all packages that allow Botonic to work in harmony. The convention for the packages is botonic-[botonic--main-package-name] for the main packages and botonic-plugin-[botonic-plugin-name] for plugins.
    • botonic-cli: here resides the code of the CLI interface that allows you to create, build and deploy your projects.
    • botonic-core: the conducting package of Botonic, responsible of interpreting the bot flows, processing the inputs, dealing with the plugins... summarizing, all the internal logic.
    • botonic-react: this allows you to build your chatbots with React, all the components and Webchat's logic can be found here.
    • botonic-nlu: an extension to provide Natural Language Understanding (NLU) to work alongside botonic-cli.
    • ...and a rich ecosystem of plugins that allows you to extend Botonic's functionalities!
  • botonic/docs - Here is where we document the project. To do so, we use docz. You can find the documentation for this project at docs.botonic.io.

How Can I Contribute?

Reporting Bugs

Before creating bug reports, please check the botonic issues as you might find out that you don't need to create one. When you are creating a bug report, please fill out the template, the information it asks for helps us resolve issues faster. Please, describe the problem and include additional details to help maintainers reproduce the problem as well as possible.

Note: If you find a Closed issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.

Suggesting Enhancements

Before creating enhancement suggestions, please check the botonic pull requests as maybe somebody is working on it. When you are creating an enhancement suggestion, please include as many details as possible by filling the template, including the steps that you imagine you would take if the feature you're requesting existed.

Creating your plugins

If you want to extend Botonic's functionalities you are free to create your own plugins as described in the following guideline.

Styleguides

Git Commit Messages

For the sake of clarity and organization, we follow this guideline in order to commit our changes.

  • feat: - implement new features for endusers
  • fix: - bug fix for endusers (not a build-process fix)
  • docs: - update to project documentation
  • style: - update code formatting (indentation, tabs vs spaces, etc.)
  • refactor: - refactoring of code
  • test: - adding or updating tests
  • chore: - updates to build process

JavaScript / TypeScript Styleguide

All JavaScript must adhere to JavaScript Standard Style.

root = true

[*]

indent_style = space

indent_size = 2

charset = utf-8

trim_trailing_whitespace = true

insert_final_newline = true

quote_type = single

ij_typescript_use_double_quotes = false

[*.md]

trim_trailing_whitespace = false
{

"bracketSpacing": true,

"endOfLine": "lf",

"singleQuote": true,

"jsxSingleQuote": true,

"semi": false,

"tabWidth": 2,

"trailingComma": "es5"

}

Please, be sure you have all the code formatted in with these parameters before submitting your code.