Skip to content

fredericomartini/boilerplate-typescript

Repository files navigation

Boilerplate node-js with typescript

Esse projeto contém



Pré-requisitos

Plugin README
Nodejs https://nodejs.org/en/
Git https://git-scm.com/downloads



Começando

$ git clone https://github.com/fredericomartini/boilerplate-typescript.git
$ cd boilerplate-typescript

Instale as dependencias com npm

$ npm i

Gere seu .env a partir do .env.example

$ cp .env.example .env

para habilitar o fluent, apm e sentry, é necessário alterar as suas variáveis



Acessos

Nome URL
Aplicação http://0.0.0.0:3000/v1
Documentação http://0.0.0.0:3000/docs
Status http://0.0.0.0:3000/status



Scripts

  • start: Executa a aplicação com pm2
  • stop: Para o processo do pm2
  • dev: Executa a aplicação em modo de desenvolvimento (nodemon)
  • debug: Executa a aplicação em modo debug (nodemon)
  • lint: Executa o lint em todos os arquivos .ts exceto os de teste
  • npm run test: Executa todos os testes funcionais e unitários
  • npm run test:unity: Executa todos os testes unitários
  • npm run test:functional: Executa todos os testes funcionais
  • npm run test:clear: Limpa o cache
  • npm run test:watch: Executa todos os testes com watcher
  • npm run test:coverage: Executa testes para a geração de cobertura de código, disponível em coverage/index.html
  • build": Executa o build da aplicação
  • generate-docs": Gera a documentação do Redoc, agrupando todos os arquivos em um



Debugger

O projeto possui um arquivo de configuração para executar o debugger pelo VSCode.

É aconselhado utilizar uma das configurações do debugger ao criar os testes, executando a configuração Jest Current File Watch após abrir o arquivo que deseja observar enquanto cria o teste.



Documentação

  • Como adicionar documentação de rotas criadas

Redoc

Exemplo de como adicionar rota para usuários:

public/redoc/index.yml

# Antes
...
  #ROTAS
  - name: status
    description: Rota disponível para verificação do status da aplicação.

x-tagGroups:
    ...
    tags:
      - status
...
# Depois
...
  #ROTAS
  - name: status
    description: Rota disponível para verificação do status da aplicação.

  - name: users
    description: Rotas para gereniamento de usuários.

x-tagGroups:
    ...
    tags:
      - status
      - users
...

public/redoc/paths/index.yml

# Antes
####################### STATUS #######################
"/status":
  $ref: "./status/index.yml"
####################### /STATUS #######################
# Depois
####################### STATUS #######################
"/status":
  $ref: "./status/index.yml"
####################### /STATUS #######################

####################### USERS #######################
"/users":
  $ref: "./users/index.yml"
####################### /USERS #######################

Criar uma pasta para users se guiando pela de status

Gerando a documentação

Após ter sido adicionado os grupos e as rotas para os resources gerados, deve ser criado um arquivo único para toda a documentação através do comando:

npm run generate-docs



Criação de databases utilizando docker (opcional)

Pré-requisitos

Plugin README
Docker https://docs.docker.com/install
Docker Compose https://docs.docker.com/compose/install



Começando

Para iniciar os containers mysql e redis, (na raiz do projeto) utilize o comando:

$ docker-compose up -d

Verifique se os containers estão disponiveis:

$ docker-compose logs mysql
$ docker-compose logs redis



Acessos

Nome URL Dados
MySQL http://0.0.0.0:3306 user:root senha:root
Redis http://0.0.0.0:6379 n/d

API de permissionamento(opcional)

O repositório já contém a API de permissionamento para verificar se uma conta(através de um token) possui ou não permissão para uma determinada ação.

É necessário passar um token(xref_audience_accounts_services.ds_api_token) que está vinculado a uma conta, audiencia e serviço.

O token deve ser passado no header das requisições através da key x-api-key.

Os controllers devem utilizar o middleware isAuthenticated no qual irá setar para o objeto req, qual a account encontrada para o token, caso não seja encontrado será gerado um erro 401.

Os métodos dos controllers devem utilizar o middleware hasPermission('MINHA_PERMISSAO') passando por parametro qual a permissão desejada, caso não tenha permissão será gerado um erro 403.

About

TypeScript boilerplate

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published