# Development

## How we work

Before contributing to development there are a number of concepts you need to understand:

1. How we model the domain
2. How we develop features
3. How we automate acceptance tests

## 1. How we model the domain

See the [Object Modeling](https://civilcode.gitbook.io/playbook/education/trails/object-modeling) Trail.

## 2. How we develop features

We develop the application feature by feature using the [Feature-Driven Development](https://en.wikipedia.org/wiki/Feature-driven_development) process. This means:

1. We start with [*Developing an Overall Object Model*](https://civilcode.gitbook.io/playbook/method/05-development/develop-object-model)
2. We [*Build a Feature Roadmap*](https://civilcode.gitbook.io/playbook/method/05-development/feature-list) (module, feature-set, feature) based on the Object Model
3. We *Plan Feature Development* based on the Roadmap
4. We *Design by Feature*
5. We *Build by Feature*

For building features please review the [Github Issues Template folder](https://github.com/civilcode/acme-platform/tree/master/.github/ISSUE_TEMPLATE) in the example application that provide checklists for modules, abilities, tasks.

### 3. How we automate acceptance tests

To be developed.
