Use the following guidelines when contributing to this project.
There are a couple of common issue types in our tracker:
- Bug reports / support requests
- Features/enhancements
Please follow our issue guidelines, when submitting new issues.
Each issue should have the following details:
- brief, descriptive title
- short overview paragraph further describing the issue
Provide the following details for feature/enhancement requests:
- user story - short paragraph in the form of "As a [user role], I would like [feature/enhancement], so that [need fulfilled]"
- wireframe - simple, monochrome diagram depicting the desired user interface (in SVG or PNG format)
- acceptance criteria (simplified) - checklist of present tense statements describing how the feature behaves
The page does not have a widget. Add a widget to the page.
As a registered user I need a widget on the page so that I have something to click
[Monochrome diagram of the desired design, e.g. a wireframe.]
The task is complete when the following criteria are satisfied:
- Widget appears on page
- User can click on widget
Note: Some of the above details will be added during the feature discovery and planning process.
When submitting a bug report or support request, include the following details, if possible:
- steps to reproduce
- screenshot showing observed behavior
- description of observed behavior
- description of expected behavior
- relevant environment details (e.g. web browser, operating system, etc)
On the page, the widget doesn't do anything when clicked.
- View the page
- Click the widget
When clicking the widget, nothing happens.
[Optionally include a screenshot, if it is relevant.]
When clicking the widget, something should happen.
- Web browser
- Operating system
Note: Some of the above details will be added during the discussion and testing process.
When contributing code, please follow the Gitflow guidelines. Specifically:
- Create a new feature branch from the
develop
branch - Prefix your feature branch name with
/feature
Additionally, the following steps help our team stay coordinated:
- Immediately open a pull request by comparing your branch against the
develop
branch - Label your pull request as
needs work
, so that other developers can see the work in progress - When ready for review, @ mention the development team, so that we know to review your code
Important: Getting developer feedback is part of our peer review process. It helps to highlight issues and improvements early in the process.
In a nutshell, write code for humans to read and understand. Our code will be minified for machines during the build process. For further reference, please read Human JavaScript by Henrik Joreteg.
Every significant line of code should have an accompanying human language (English) comment. This is for several reasons:
- Comments act like a pair-programmer, explaining the code to other developers or your future self
- Comments may illuminate errors
- logical errors where code is not doing what is expected
- semantic errors where the code is not literate
Each line of code should perform only one action. When chaining is important, each chained aciton should be placed on a new line.
Please follow the JavaScript semi-standard coding style.
Use semantic variable names. Semantic variable names have the following traits:
- They succinctly describe what they represent
- Words are fully spelled out
- Variables with multiple words use camel case notation
- When used in subsequent lines of code, the variable name reads as close to a plain language sentence as possible
This project is using a feature module organization pattern. Please use the following, or similar, file structture:
- / (project root)
- featureName/
- collections/
- collection.js
- schema.js
- permissions.js
- client/
- templateName/
- templateName.html
- templateName.js
- routes/
- routes.js
- templateName/
- server/
- methods.js
- publications.js
- collections/
- featureName/
The RefugeeTech platform is built using the Meteor.js framework. The following Meteor packages are important components of the RefugeeTech Platform.
AutoForm is used to provide easy input forms, based on schema definitions (see below).
Anti Fake is used to generate fake/example data.
Flow Router is used for project routing.
Simple Schema is used to create schemas for our database collections.
Blaze is the templating language used in our project packages.
Bootstrap is the primary CSS framework for the RefugeeTech templates.