This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Contributing Guidelines

How to contribute to the project or the docs.

Both the project and its documentation can use a helping hand!

1 - Contribution Guidelines For Documentation

How to contribute to the documentation

We use Hugo to format and generate our website and the Docsy theme for styling and site structure. Hugo is an open-source static site generator that provides us with templates, content organisation in a standard directory structure, and a website generation engine. You write the pages in Markdown (or HTML if you want), and Hugo wraps them up into a website.

All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult GitHub Help for more information on using pull requests.

Updating a single page

If you’ve just spotted something you’d like to change while using the docs, Docsy has a shortcut for you:

  1. Click Edit this page in the top right hand corner of the page.
  2. If you don’t already have an up to date fork of the project repo, you are prompted to get one - click Fork this repository and propose changes or Update your Fork to get an up to date version of the project to edit. The appropriate page in your fork is displayed in edit mode.

Previewing your changes locally

If you want to run your own local Hugo server to preview your changes as you work:

  1. Follow the instructions in Getting started to install Hugo and any other tools you need. You’ll need at least Hugo version 0.105 (we recommend using the most recent available version), and it must be the extended version, which supports SCSS.

  2. Fork the documentation repo repo into your own project, then create a local copy using git clone. Don’t forget to use --recurse-submodules or you won’t pull down some of the code you need to generate a working site.

    git clone --recurse-submodules --depth 1 https://github.com/nielsdos/crepes-docs.git
    
  3. Run hugo server in the site root directory. By default your site will be available at http://localhost:1313/. Now that you’re serving your site locally, Hugo will watch for changes to the content and automatically refresh your site.

  4. Continue with the usual GitHub workflow to edit files, commit them, push the changes up to your fork, and create a pull request.

Creating an issue

If you’ve found a problem in the docs, but you’re not sure how to fix it yourself, please create an issue in the documentation repo. You can also create an issue about a specific page by clicking the Create Issue button in the top right hand corner of the page.

Useful resources

2 - Contribution Guidelines For The Project

How to contribute to the project

Please always target the develop branch in your pull requests.

If you don’t know where to start, you can always try to look at the open issues in the repository to find missing features or bugs that should be fixed.

If you don’t have a particular feature of bugfix in mind, but would still like to make a contribution, you can always check the roadmap and work on something you feel is missing from the project.

Setting up a development environment

You can follow the same installation instructions for a production environment, except for the following changes.

Updating .env

It is recommended to change the .env file to have the following properties set:

APP_ENV=development
APP_DEBUG=true

Installing development dependencies

Do not pass --no-dev to the composer install command line:

composer install

Front-end dependencies can be installed with:

yarn install

Developing

You can start the built-in Laravel server using:

php artisan serve

To make changes to the front-end JavaScript and CSS code, you should be using:

yarn watch

to watch for changes and automatically rebuild the affected front-end files.

Testing

We use PHPUnit as our testing framework with a test database called courses_testing. Make sure to setup an empty database with that name in order to run the tests. Please make sure to include regression tests if you are fixing a bug, or feature tests when adding a new feature.

To run the tests, use:

vendor/bin/phpunit

If you wish to generate a coverage report whilst running the tests, you can use:

php artisan view:clear;XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-html reports

Static analysis

We use the PHPStan static analyser tool to find bugs earlier. We recommend that you run the tool and fix any errors that pop up by your changes before opening a pull request.

To run the tool you can use:

vendor/bin/phpstan analyse --memory-limit=1G