# Contributing Thank you for your interest in contributing to Finch! Below you'll find information and rules on how to start contributing. ## Table of contents - [Pull requests](#pull-requests) - [PR format](#pr-format) - [Getting started](#getting-started) - [Documentation](#documentation) - [Tests](#tests) - [Releasing](#releasing) ## Pull requests All changes must be made via pull requests. PRs are preferred over issue submission where possible. #### PR format **Title / Tags**: As a prefix to the title of your PR, include square-bracketed tags indicating the purpose of the PR. Ideally, you should utilize existing tags, such as: `[feature]`, `[platform]`, `[bug fix]`. See [.finch/release_config.yml](.finch/release_config.yml) for additional examples. **PR Body**: The body of the PR should include all context about the purpose of the pull request. ## Getting started Finch uses `make` targets for the development, testing and release processes. - To set up the project, run `make setup` - To generate an Xcode project file, run `make xcodeproj` - Code style should mostly follow Ray Wenderlich's [Swift Style Guide](https://github.com/raywenderlich/swift-style-guide). If there is ambiguity, try to match the style of the surrounding code. *Note*: You may need to run `make update_build_number` prior to building the project in Xcode as this file is generated upon release time. ## Documentation Finch strives for 100% documentation and uses [Jazzy](https://github.com/realm/jazzy) to generate doc pages. All types, variables and functions should be documented. See existing code for examples. ## Tests - Finch uses the XCTest framework for unit and snapshot tests. In the majority of cases, a code change should be accompanied by the addition of tests surrounding that change. - To run all tests, run `make test` ## Releasing See [RELEASING.md](RELEASING.md)