This project is work of many developers.
For an overview of our current best practices, see this doc.
For an architecture overview (as of July 2021), see this video.
We accept pull requests, and you may propose features and discuss issues.
⚠️ If you're an Artsy Engineer, be sure to run the general setup script located in Potential first.
Clone the project on GitHub and cd in:
git clone [email protected]:artsy/force.git && cd force
Execute the setup script:
./scripts/setup.sh
Start the server:
yarn start
Force should now be running at http://localhost:4000/.
yarn type-check
yarn jest
yarn start:prod
This creates a production-ready bundle of client and server-side code and boots the server. (This will take a while to compile.)
In case you want to ease debugging the server-side code, you can set the DEBUG
environment variable to disable webpack optimizations.
env DEBUG=true yarn start:prod
Do you see an error about not providing a secure connection?
Your browser has probably cached a redirect to https://...
. Clear your browser cache for this page:
- Browse to the failing page
- Open Chrome Dev Tools (this adds a drop down menu to the reload icon)
- Click and hold “Reload” icon until the drop down appears.
- Select “Empty Cache and Hard Reload”
- You may now browse successfully to the page
See the docs.
Make sure your fork is up-to-date and create a topic branch for your feature or bug fix.
git checkout main
git pull upstream main
git checkout -b my-feature-branch
Write tests for all new features and fixes using Jest. Run all tests with yarn test
and be sure to include .jest
in the filename so that the test-runner knows what to look for.
To speed up your workflow try watching an individual file or directory for changes, e.g. yarn jest --watch src/Components/Authentication
We definitely appreciate pull requests that highlight or reproduce a problem, even without a fix.
Implement your feature or bug fix.
Make sure git knows your name and email address:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Prefix your branch with your Github username:
git checkout -b <username>/branch-name
git add .
git commit -m 'Some descriptive commit message'
At this point a series of githooks will run via Husky to ensure staged code is free of linting errors and is formatted properly with Prettier. If all good, then run
git push
This will then run yarn type-check
to ensure that type-errors aren't committed upstream, which in turn will prevent unnecessary CI churn when working on a feature. (The reason we run type-checking before git push
(vs git commit
) is that it's common for developers to create temporary wip
commits, which often contain type errors.)
NOTE: For those who prefer to not use our git-hooks workflow, you can easily opt out by prefixing
HUSKY_SKIP_HOOKS=1
to executed commands, or by using--no-verify
. To opt out globally, add this env var to your.bashrc
(or related).
Go to https://github.com/artsy/force and select your branch. Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.
Go back to your pull request after a few minutes and see whether it passed muster with Circle. Everything should look green, otherwise fix issues and amend your commit as described above.
It's likely that your change will not be merged and that the nitpicky maintainers will ask you to do more, or fix seemingly benign problems. Hang in there!
Please do know that we really appreciate and value your time and work. We love you, really. <3