Thanks for your interest in KeystoneJS. It's a project we're excited to be working on, and we welcome all forms of contribution - from issue reports, to PRs and documentation / write-ups.
As a simple guide:
-
Ensure that your effort is aligned with the project's roadmap by talking to the maintainers, especially if you are going to spend a lot of time on it.
-
Make sure there's an Issue open for any work you take on and intend to submit as a pull request - it helps core members review your concept and direction early and is a good way to discuss what you're planning to do.
-
If you open an issue and are interested in working on a fix, please let us know. We'll help you get started, rather than adding it to the queue.
-
Make sure you do not add regressions by running
npm test
. Please also follow our established coding conventions (with regards to formatting, etc) -
You can also run
npm run lint
andnpm run style
- our linter is a WIP but please ensure there are not more violations than before your changes. -
All new features and changes need documentation. They live over at the Keystone-site repo.
-
We have three translations so far, please read our Documentation Translation Guidelines.
-
PRO TIP: If you've opened an issue and have come up with a solution yourself, we prefer you to convert the already existing issue into a PR instead of opening a new one. This can be done with the hub command line tool
Example:
# convert issue 1239 into a pull-request sending all commits from `fix_hooks` branch in creynders' # keystone fork to the `master` branch of the official repo hub pull-request -i 1239 -b keystonejs/keystone:master -h creynders/keystone:fix_hooks
If you are working on the React Admin UI, you'll also need to know this:
- The Admin UI is generated with Browserify when Keystone starts. To enable
watching files, set the environment variable
KEYSTONE_DEV
, e.g
KEYSTONE_DEV=true node keystone.js
If you'd like to talk to the core developers, we all hang out in a Slack channel to discuss Keystone. Ping @jedwatson to get an invite.