Contribute [WIP]

We are very happy about anyone that wants to improve this project! Please make sure to read this guide before starting your work to avoid unnecessary trouble down the road!

Always make sure to reach out to us via Discord or mail ([email protected]) if you want to start developing features or fixing bugs! It's way easier for you to get going if you get some initial support from the Core Team :)

Asking questions, creating GitHub Issues, adjusting things through PRs... every kind of community contribution counts:

Reporting issues

[WIP]

Propose features

[WIP]

Adding features or fixing bugs

In order to work on the core code to add features or fix reported bugs, you should clone the repo first:

git clone [email protected]:matestack/matestack-ui-core.git
cd matestack-ui-core
git checkout -b "your_feature/bugfix_branch_name"

We dockerized the core development/testing in order to make it as convenient as possible to contribute to matestack-ui-core.

You will need to install docker and docker-compose:

Dummy app

Setup the dummy app

In order to migrate the database and install yarn/npm packages, do:

If you already created sqlite files locally in spec/dummy/db, the command docker-compose run --rm dummy bundle exec rake db:setup SKIP_TEST_DATABASE=true will fail. Please remove the locally created sqlite files and rerun the command

You might need to redo these steps if new migrations or yarn/npm packages are added/updated. Always remember to resolve JavaScript packages with NPM within the dummy app rather than using YARN.

Run the dummy app

The dummy app provides a good playground for Matestacks core development in order to review effects of core implementation changes hands on in a browser. The source code can be found and manipulated (be careful what you commit) at spec/dummy. Run it like seen below:

Visit localhost:3000 in order to visit the dummy app. Feel free to modify it and play around with components and concepts. Just don't push your local changes to the remote repo.

The pages/component used in the dummy app live in spec/dummy/app/matestack.

Run the Webpack watcher

During development, the Webpack watcher can be used to compile the JavaScript when any relevant JavaScript source code is changed. Run it in a separate terminal tab like seen below:

Rerun bundle/yarn install in a Docker container

In order to execute commands such as bundle install, yarn install or npm install you need to run:

Optional: run commands as your user in a Docker container

When running commands, which generates files (e.g. rails generator usage), which then are mounted to your host filesystem, you need to tell the Docker container that it should run with your user ID.

Otherwise the generated files will be owned by the root user and are only writeable when applying sudo.

Note: bundle install and yarn install can't be executed inside the Docker container as the current user. CURRENT_UID=$(id -u):$(id -g) docker-compose run --rm dummy bundle install will not work.

Testing

To assure this project is and remains in great condition, we heavily rely on automated tests. Tests are defined in /spec folder

Setup the test ENV

You might need to redo these steps if new migrations or yarn/npm packages are added/updated. Always remember to resolve JavaScript packages with NPM within the dummy app rather than using YARN.

Run the specs

Always make sure to compile the JavaScript assets via ./bin/webpack in the spec/dummy folder before running the specs. You can also run ./bin/webpack --watch in a separate test container (without --service-ports). The compiled assets are mounted to your filesystem.

Documentation & test coverage

Documentation can be found in the /docs/* folder. Please make sure to cover basic use cases of your concepts & components for other users! Feel free to take a look at other examples and copy their structure!

Note: We will not approve pull requests that introduce new concepts or components without documentation. Same goes for existing concepts & components. If you change the behavior of an existing part of this project, make sure to also update the corresponding part of the documentation!

Tests follow quite the same rules as the documentation: Make sure to either add relevant tests (when introducing new concepts or components) or change existing ones to fit your changes (updating existing concepts and components). Pull requests that add/change concepts & components and do not come with corresponding tests will not be approved.

Last updated

Was this helpful?