# Development Workflow
> This document describes the step-by-step to the development workflow for apps, web systems, etc.
## Step 1 - Brainstorming
Write all ideas, possible features and other things in one notepad, no matter how the notes are organized, just register all information about the project.
## Step 2 - Initial Planning
Create a copy of the [Project Documentation - Requirements Analysis Template][template_req]. Then, fill fields of the Section [Project information][project_information] and finally describe your project idea with a [sensational description][section_sensational_description] for "to sell" the project and short descriptions of the features.
## Step 3 - Problem solved
Describe the problems solved by the system in the section [Problem Statement][problem_statement], including differences from other solutions and the innovative points. At the end, describe the [Project Objectives][project_objectives].
## Step 4 - Functional Requirements
Write the functional requirements in the Project Documentation in Section [4.1][functional_requirements] file following the examples.
## Step 5 - Technologies and Screens
In Section [Technical Requirements][technical_requirements], fill the fields with technologies that will be used and describe the screens, without design, that the system will have.
## Step 6 - Non-Functional Requirements
Write the non-functional requirements in the Project Documentation in Section [4.2][nonfunctional_requirements] file following the examples.
## Step 7 - Set up your Workplace
1. Configure your project management software like Trello.
2. Create, configure and init your development environment.
- Project Repository like Github
- Continuous Integration like Codeship, Circle CI, Travis CI, etc.
- Quality verifier like Code Climate
- Update and/or install yours development tools like:
- Code editor: visual code, sublime text, atom, etc.
- Programming language and its libraries, frameworks etc., when necessary.
## Step 8 - Design the System
Create a board on Trello to work with scrum/kanban structure and design the system:
- Create the Wireframing, Prototyping and/or Mockuping from system.
- Model the Database.
- Project the API endpoints.
## Step 9 - Define Deliveries
Define deliveries that must contain functions defined in the functional requirements. Each delivery must be functional and be numbered sequentially.
As a good practice, a first delivery should be a Minimum Viable Product (MVP), with business objectives, feasibility (including technical, financial, etc.) and the needs for the customer. The following deliveries should represent significant improvements for the customer.
These deliveries should be describing in the section [5][sprints] of the document.
## Step 10 - Initial Project Setup
- Create the project structure.
- Execute `git init` in the project directory, and others required commands.
- Install the required packages with `npm` or `yarn`.
- If you want to keep the same environment for the whole team, use docker, linter file for code editor, etc.
- Configure the automatic deployments.
## Step 11 - Development
From here, the actions regarding the scrum or kanban methodology must be performed and the application developed, performing the deliveries as specified in the step 9.
**Good work!!!**
[template_req]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements
[section_sensational_description]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#22-Sensational-description
[project_information]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#1-Project-information
[problem_statement]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#2-Problem-Statement
[project_objectives]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#21-Objectives
[functional_requirements]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#41-Functional-Requirements
[nonfunctional_requirements]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#42-Non-Functional-Requirements
[technical_requirements]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#433-Technical-Requirements-Implementation-Requirements-and-Pattern-Requirements
[sprints]: https://hackmd.io/@Gd990n1lSkCOJHSiJEnseQ/requirements#5-Sprints