## Contas a serem criadas (pelos ADM)
* [Rocket.chat](https://rocket.chat/)
* [Jira Atlassian](https://www.atlassian.com/br/software/jira)
* [Mconf Github](https://github.com/mconf)
# Primeiros passos:
Primeiramente, devemos escolher um bom terminal para começarmos os trabalhos corretamente (ninguém merece usar o terminal padrão do Ubuntu). O terminal que recomendo é o **Yakuake**, que pode ser instalado usando o comando:
* `sudo apt-get install yakuake`
Depois disso, siga os passos subsequentes para iniciar os trabalhos no Mconf.
## Configurar o github
* Baixe o repositório do [**Elos-portal**](https://github.com/mconf/elos-portal) e crie uma branch para testar e brincar no portal.
> **ProTip**: Se tu és um apaixonado por chaves SSH, talvez este [**Tutorial**](https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) seja útil para você.
* Se você não tiver o git instalado no seu computador, apenas execute o comando `sudo apt-get install git` para instala-lo.
> **ProTip**: Caso apareça um erro dizendo que não foi possível encontrar o package **Git**, execute o comando `sudo apt-get update` para corrigi-lo.
* Para ter acesso a criação de branchs você deve primeiro setar o seu usuário do git na máquina:
* `$ git config --global user.name 'username'`
* `$ git config --global user.email 'email'`
e depois, crie uma branch de testes chamada ``'username-test'`` (onde **username** é o seu nome de **usuário no github**), para todos do time saberem que é uma branch de testes.
## Instalação do rbenv
*"Use rbenv para escolher uma versão Ruby para seu aplicativo e garantir que seu ambiente de desenvolvimento corresponda à produção. Coloque o rbenv para trabalhar com o Bundler para atualizações Ruby indolores e implantações à prova de balas"*, rbenv, [**GitHub page**](https://github.com/rbenv/rbenv#groom-your-apps-ruby-environment-with-rbenv).
* Para instalar o rbenv corretamente, siga o tutorial da página oficial do rbenv no [**GitHub**](https://github.com/rbenv/rbenv#basic-github-checkout).
## Docker
* Para a instalação do Docker-compose, seguir este [**Guide**](https://docs.docker.com/compose/install).
* Depois de instalado, seguir este [**Guide**](https://docs.docker.com/compose/gettingstarted) para entender o funcionamento base do Docker-compose.
* Alguns comandos para serem lembrados:
* `Docker-compose up 'service-name'`
* `Docker-compose build 'service-name' `
* `Docker-compose run 'service-name' bash`
> **ProTip**: os **service-name** se encontram no arquivo chamado **docker-compose.yml**.
>
## Enfim chegamos
Agora que ja tens o portal e o github configurados corretamente em sua máquina, é hora de baixar uma IDE para facilitar a visualização dos arquivos do portal. Existem muitas IDE's que podem ser usadas, como o Sublime Text, ATOM, VScode e etc...
* Para baixar qualquer uma destas IDE's basta entrar no gerenciador de aplicativos do linux e pesquisar pelo nome dela (VScode é vida).
Depois de instalada, abra os arquivos do portal com a IDE e dê uma olhada nos arquivos do portal (mais especificamente olhar os arquivos que estão nas pastas Model, View e Controller).
## Inicializando o Portal
Para iniciar o portal, primeiramente, iremos rodar o comando `docker-compose build` para criar as imagens e containers corretamente. Quando o build acabar, entre no bash do container de dev para setar o banco de dados (`docker-compose run dev bash` e `rake db:drop db:create db:migrate && rake db:reset db:populate` respectivamente).
Com esses comandos o portal é inicializado corretamente e ja estará pronto para desenvolvimento (talvez tenha que rodar `bundle install` dentro do bash do container de desenvolvimento para instalar corretamente as versões das gems).
## Cursos adicionais para facilitar o entendimento
* Curso de Ruby na [Code Cademy](https://www.codecademy.com/learn/learn-ruby).
* Introdução a [arquitetura MVC](https://www.devmedia.com.br/introducao-ao-padrao-mvc/29308).
* Guide sobre [Models](https://guides.rubyonrails.org/active_record_basics.html), [Views](https://guides.rubyonrails.org/action_view_overview.html). e [Controllers](https://guides.rubyonrails.org/action_controller_overview.html).
* Artigo sobre orientação a objetos em [Ruby](https://www.devmedia.com.br/orientacao-a-objetos-com-ruby/33726).
## Criação de Branchs e Pull Requests
### Branchs
Para criar a branch corretamente, é preciso saber que usamos padrões para criação delas, sendo eles:
* `feature-<nome-da-branch>` quando for desenvolver uma nova feature no portal.
* `update-<nome-da-branch>` quando for atualizar alguma feature.
* `fix-<nome-da-branch>` quando for corrigir algum bug ou testes quebrados.
Então por exemplo, quando for corrigir um teste quebrado no arquivo de subscriptions poderia ser criada a branch `fix-subscriptions-tests`.
### Pull Requests
O time Elos usa a ferramente Jira para organização do trabalho em sprints e cards, e para organizar melhor os PR's e facilitar a criação do changelog nós adotamos a prática de inserir a chave do card no nome do PR, assim, identificando o PR ao card em que ele foi desenvolvido. Exemplo:
* card do jira de chave `ELOSP-123`, o pull request será criado da seguinte maneira: `ELOSP-123 <nome-do-pr>`
## Jira
O Jira é a ferramenta de gerenciamento de projetos que usamos na equipe Elos. Existem muitas funcionalidades como relatórios de uso, integrações com Github e com vscode, mas vamos nos focar no básico.
A equipe Elos faz reuniões de 2 em duas semanas que são chamadas de sprints, e nelas são escolhidos quais tarefas serão feitas no decorrer dessas duas semanas. Depois de escolhidas as tarefas, elas ficarão todas na coluna de `TO DO` no board do JIRA: