HospitalRun is made up of several repositories:
Repository | Description | Technologies | Link to Repo-specific Contributing Guide |
---|---|---|---|
frontend | Frontend React appllication | React, Redux, PouchDB, Jest | Link |
components | React building block components | React, TSDX, Jest, Storybook | Link |
server | Host the service | NodeJs, Fastify, CouchDB | Link |
core | Host core models | Typebox | Link |
Note: We use TypeScript.
To get started contributing: fork the repositories you're interested in contributing to and follow each project's contributing guide to get the development environment setup. Each project can be contributed to independently of the other projects and there is no need to setup all the projects unless you want to contribute to all of them.
Repo-specific contributing guides are listed in the above table for easy access.
Also, you are encouraged to reach out to the community of contributors for questions and feedback. See you in Slack!
Interested in working on the HospitalRun codebase? The Issues tab in each repository is the best spot to begin looking for work. Issues with the help wanted
label indicate that the issue is open for a contributor to work on. Looking for an aggregation of all open issues in the HospitalRun project, check this link out.
To request an issue be assigned to you, leave a comment on the issue indicating you'd like to work on it! A core maintainer will then assign the issue to you, indicating that you are the one that will work on it.
Note: In order to support as many contributors as possible, we will try to assign one issue per contributor at a time.
Note: If a contributor has been assigned an issue for more than 14 days and there has been no activity, a core maintainer will leave a comment asking about the status of the issue. If there is no response in 7 days, then the issue will be unassigned and marked as help wanted
.
- Stage all pending changes:
git add .
- Commit the changes:
npm run commit
- Push the changes:
git push
Note: All repos use conventional commits and semantic-release
You can create a pull request to submit changes to the source code. Please take a moment to see if your pull request is incomplete or complete:
Pull Request is... | Description | Need to add tests? | Need to pass checks? |
---|---|---|---|
Incomplete | You have questions. It is a partial implementation. You plan to refactor later. etc. |
No | No |
Complete | It is ready for production. | Yes | Yes |
If incomplete, add 'WIP' to the beginning of the pull request title and mark the pull request as a draft.
Once submitted, a core maintainer will review the pull request and provide feedback.
Note: If feedback is requested and the author of the pull request does not follow up on the feedback within 7 days, a core maintainer will then complete the requested changes on behalf of the author and merge the changes in.
HospitalRun is a member of the Open JS Foundation. As such, we request that all contributors sign our contributor license agreement (CLA).
For more information about CLAs, please check out Alex Russell’s excellent post, “Why Do I Need to Sign This?”.
Before contributing please read the code of conduct
We recommend the use of nvm for the management of different versions of Node, and yarn for a fast, reliable, and secure dependency management. We suggest to install yarn with npm i -g yarn
.
Use these commands to start using the monorepo. The following commands require that your GitHub account has SSH access enabled.
git clone [email protected]:HospitalRun/hospitalrun.git
cd hospitalrun
git submodule update --init --recursive
yarn
yarn workspaces run build
# Do some coding then commit with
npx git-cz
Use these commands to update all submodules and use the last available commit.
git submodule update --recursive --remote
yarn upgrade // Update all dependencies automatically
yarn update // This is similar to npm-check interactive update mode. It provides an easy way to update outdated packages.
yarn commit-frontend
yarn commit-server
yarn commit-components
yarn commit-cli
yarn commit-core
yarn commit-docs
You must follow the following rules:
- Commit description must always start with a capital letter.
- Always use a scope. Here are some examples:
Generic
setting
ci
deps
readme
devops
system
core
testing
cli
release
lifecycle
Monorepo specific
monorepo
package
release
lifecycle
workspace
Use these commands to add a new package after adding a submodule.
git submodule update --remote
git add ./packages
yarn upgrade
npx git-cz