Contributions are always welcome, no matter how large or small!
- Node.js >= v14.15
- Yarn - latest version is alright
On your first checkout of the repository, you'll need to install dependencies and run the project.
Contributing to the Fotos
app, requires Node.js and Yarn installed on your machine. We suggest
installing Node.js with nvm, and Yarn can later be installed with
npm install -g yarn
.
Once setup, install dependencies build initial packages.
yarn install || yarn
yarn start
yarn android
All development on Fotos happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.
Submit all pull requests directly to the main
branch. We only use separate branches for upcoming
releases / breaking changes, otherwise, everything points to main
.
Code that lands in main
must be compatible with the latest stable release. It may contain
additional features, but no breaking changes. We should be able to release a new minor version from
the tip of master at any time.
We utilize Yarn's release workflow for declaring version bumps and releasing packages. To enforce this standard, we have CI checks that will fail if a package has been modified, but a version bump has not been declared.
Please report bugs using the official issue template, only after you have previously searched for the issue and found no results. Be sure to be as descriptive as possible and to include all applicable labels.
The best way to get your bug fixed is to provide a reduced test case. Please provide a public repository with a runnable example, or a usable code snippet.
Before requesting new functionality, view the roadmap and backlog as your request may already exist. If it does not exist, submit an issue using the official template. Be sure to be as descriptive as possible and to include all applicable labels.
We accept pull requests for all bugs, fixes, improvements, and new features. Before submitting a pull request, be sure your build passes locally using the development workflow below.
Type checking is performed by TypeScript. We prefer to run this first, as valid typed code results in valid tests and lints.
Tests are written with Jest. For every function or class, we expect an
associated *.test.ts
test file in the package's tests folder. We also write unit tests, not
integration tests.
Linting is performed by ESLint. Most rules are errors, but those that are warnings should not be fixed, as they are informational. They primarily denote browser differences and things that should be polyfilled.
Code formatting is performed by Prettier. We prefer to run Prettier within
our code editors using format-on-save
functionality.