Who Goes First follows the Collective Code Construction Contract (C4) with some changes. This means that anyone can contribute to the project.
In this document, the words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" use the definitions of key words according to RFC 2119.
- Adding cards
- Contributing translations
- Fixing bugs and adding features. (See the rest of this document for guidelines.)
Who Goes First is built using the Flask framework. Translation and localization is done using Flask-Babel Static site generation is done using Frozen-Flask.
First set up a virtual environment. If there are spaces in the path to the directory where you checked out this code choose a path without spaces for the venv directory.
sudo easy_install pip
sudo pip install virtualenv
virtualenv venv
source venv/bin/activate
Next install the dependencies.
pip install -r requirements.txt
Python code MUST follow the PEP 8 style guide, and pass a lint check by flake8 without warnings or errors.
JavaScript code MUST follow standard JavaScript rules.
Now you can run locally.
python whogoesfirst.py
To freeze as static files, run the freeze Python script.
nox -s freeze
You can run the full suite of tests with Nox.
nox
To run just a specific session (for example: lint), use the -s session_name
command-line argument.
nox -s lint
Every change that modifies or adds a new string MUST extract messages for translation. Run the following command in your development environment:
pybabel extract -F babel.cfg -o messages.pot .
See TRANSLATING.md for more detailed instructions on contributing translations.
Send a pull request that identifies the problem you are solving in the subject and a description. There should be one pull request per problem solved. Keep changes small! A maintainer will verify that your contribution meets the guidelines and will merge it.
- A patch SHOULD have an animated selfie to improve communication between Maintainers and Contributors.