Esse repositório é destinado a armazenar o código desenvolvido durante a avaliação.
Pré-requisitos:
Para rodar esse projeto em seu ambiente de desenvolvimento, certifique-se de ter o
node
enpm
instalado em sua versãolts
.
Clone o repositório para seu ambiente de desenvolvimento.
git clone https://github.com/marc3gomes/avaliacao-rede-dor.git
Entre na pasta em que foi clonado o projeto.
Atenção:
Antes de iniciar o projeto, renomeie o arquivo .env.example
para apenas .env
.
Você pode iniciar o projeto com:
npm run dev
# or
yarn dev
Utilizei o yarn em meu ambiente.
Depois, abra http://localhost:3000
com seu navegador para ver o resultado.
dev
: Executa seu aplicativo utilizando o ts-node-devlocalhost:3000
.build
: Cria a versão build de produção.start
: Inicia um servidor simples com o código de produção da compilação.lint
: Executa oeslint
em todos os arquivos typescript.test
: Executa o jest para fazer os testes unitários/integração.test:watch
: Executa jest no modo watch.yarn prisma migrate dev
: Cria um banco de dados com SQLite.npx prisma studio
: Sobe uma aplicação visual do banco de dadoshttp://localhost:5555/
.
Com o intuito de diminuir a barreira de execução do projeto em diferentes ambientes de desenvolvimento, SQLite
através do ORM Prisma
.
Adicionei os comandos para a utilização do prisma
acima, mas caso não saiba o que esteja fazendo, não recomendo a utilização, para não ter risco de subscrever o banco de dados atual e quebrar os testes feitos com o jest
.
yarn prisma migrate dev
: Cria um banco de dados com o arqusivo localizado na pasta prisma/schema.prisma
.
Para testar as rotas, recomendo utilizar alguma ferramenta que você conheça. Exemplo: insomina
ou postman
Utilizei como ferramenta o
insomina
. Criei uma galeria com todas as minhas rotas e exportei no formato.json
. O arquivo exportado está disponibilizado com os arquivos do projeto.Insomnia_routes.json
.
Se você não souber como importar o json
em sua ferramenta teste, recomendo que crie as rotas de forma manual com as instruções abaixo.
-
Listar todos os usuários:
GET
http://localhost:3000/users
-
Buscar o usuário:
GET
PUT
http://localhost:3000/users/
id
-
Criar usuário:
POST
http://localhost:3000/users
Exemplo do json a ser passado no corpo da rota.
{
"email": "you@demo.com",
"name": "Name"
}
- Atualizar usuário:
PUT
http://localhost:3000/users
Exemplo do json a ser passado no corpo da rota.
{
"id": Int,
"email": "you@demo.com",
"name": "Name"
}
- Apagar usuário:
PUT
http://localhost:3000/users/
id
É necessário que a cada edição de código, ou seja: inserção, refatoração, correção ou novas funcionalidades, seja criada uma branch
a partir da develop
.
Antes de alterar o código, certifique-se de estar na branch
feature
.
Visando manter um histórico de commits
sem sujeiras e sem possíveis dano temos um hook pre-commit
realizando verificações automatizadas através do eslint
e jest
para possíveis erros de Typescript, escrita do código e testes de integração
.
Para continuar prezando pelo histórico, devemos seguir as práticas:
- Se for necessário puxar alterações da master, precisamos utilizar o
rebase
- Após terminar as features ou correções, devemos utilizar o
merge
para enviá-la para adevelop
. - Utilizar o
git reset
apenas em branches separadas da develop ou master - Utilizar o
git revert
para a master se necessário
(Fixa) master:
- Reflete a versão estável e de produção do código.
- Commits direcionados a esta branch devem ser feitos por meio de (PRs) utilizando a branch develop.
(Fixa) develop:
- Reflete a última versão de desenvolvimento.
- Feature branches são mescladas aqui para testes antes de serem enviadas para a main.
(Variável) feature/nome-da-feature:
- Cada nova feature é desenvolvida em uma branch separada.
- As branches de feature são mescladas na develop via pull request.
(Variável) hotfix/nome-do-hotfix:
- Criada a partir da master para correção de bugs críticos em produção.
- Mesclada de volta na main e também na develop.
- Branchs do tipo
feature
Pull Requests:**
- Criar PRs para mesclar branches de
feature
nadevelop
. - Revisão de código da mesclagem.
- Revisão do testes e build pelo
CI
doGithub Actions
- Branchs do tipo
hotfix
Pull Requests:**
- Criar PRs para mesclar hotfixes (na
master
em extremaurgência
) e nadevelop.
- Revisão do testes e build pelo
CI
doGithub Actions
- Releases:
- Quando a
develop
atingir um estado estável, criar um PR para mesclar namaster
e adicionar umatag de versão.
- Revisão do código da mesclagem.
- Revisão do testes e build pelo
CI
doGithub Actions
Ao criar um Pull Request
para as branches master
ou develop
será executado um teste de CI que irá seguir as orientações estabelecidas no arquivo dentro da pasta do .github
. Será realizado testes do jest
e o build
da aplicação.
Para garantir que esse fluxo será seguido da forma mais fidedigna possível, recomendo a utilização da ferramenta git-flow cheatsheet.
- O projeto está em
typescript
, foi utilizado oframework Express
. - Para validação da escrita do código, está sendo utilizado
eslint
eprettier
. - Para garantir um padrão na indentação
editorconfig
. - Para testes unitários e de integrações, usamos o
jest
esupertest
- O banco de dados utilizado foi o SQLite.
- Para interação com o banco de dados, foi utilizado o
ORM Prisma
- Para ter testes de CI na abertura do pull_requests
Github Actions
Extensão do VSCode
- Eslint
- Prettier
- Editorconfig
Documentações
Dicas:
-
Configure o autocorrect do git para facilitar seu trabalho.
git config --global help.autocorret 1
-
Caso o arquivo dev.db tenha sido alterado os testes do jest irá quebrar.