API para a aplicação ABC Gestão de exames onde é possível realizar o cadastro e controle de exames de uma empresa
Recursos | Rotas | Instalação | Configuração | Executando a API | Insomnia | Tecnologias | Licença
- CRUD de cargos, usuários, tipos de exames, categorias, e exames;
- Login com matricula ou email e senha;
- Listagem dinâmica para usuários com os seguintes filtros (via query params):
- Nome;
- Matrícula;
- Cargo;
- Listagem dinâmica para exams com os seguintes filtros (via query params):
- Nome do funcionário;
- Matrícula do funcionário;
- Cargo do funcionário;
- Tipo do exame;
- Categoria do exame;
- Validade (por período);
- Upload de imagem do usuário para um diretório local ou;
- Upload de imagem do usuário para o IBM Cloud Object Storage.
- CRUDs seguindo o seguinte modelo:
-
GET /
-
GET /:id
-
POST /
-
PATCH /:id
-
DELETE /:id
- Cargo de usuário: prefixo
jobs
- Usuário: prefixo
users
- Tipos de exame: prefixo
exam-types
- Categorias: prefixo
categories
- Exames: prefixo
exams
- Cargo de usuário: prefixo
-
- Login:
POST sessions
- Rotas "secretas" para que não necessitam de autenticação:
-
POST secret/jobs
- Criar cargo -
POST secret/users
- Criar usuário
-
Obs.: As rotas "secretas" permitem criar um cargo e um usuário usuário enquanto não há nenhum registro, portanto, não havendo usuário que possa fazer login na aplicação.
Para clonar e executar esta aplicação é necessário possuir instalado Git e NodeJS (que instala também o npm). Em sua linha de comando:
# Clone o repositório
$ git clone https://github.com/marcosribeirodacunha/abc-gestao-de-exames-api.git
# Entre no repositório
$ cd abc-gestao-de-exames-api
# Instale as dependências
$ yarn
// ou npm install
Renomeie o arquivo .env.example
para .env
.
- Na variável
APP_URL
adicione a url do servidor no qual a aplicação está sendo executada. (Pode não ser necessário modificar esta variável); - Insira na variável
AUTH_SECRET
uma string que servirá para geração do token JWT. É recomendável que esta string seja um hash md5 aleatório. Caso deseje, é possível gerar uma hash md5 aqui.
Siga os passos seguintes para concluir a configuração das variáveis de ambiente.
Esta aplicação utiliza como banco de dados o Postgres em um container do Docker. Entretanto é possível utilizar o banco instalado localmente.
Antes de realizar as migrations realize os seguintes passos:
- Crie um banco de dados com o mesmo nome daquele contido na variável
TYPEORM_DATABASE
do arquivo.env
; - Adicione os dados de conexão do banco de dados postgres nas seguintes variáveis:
TYPEORM_HOST
TYPEORM_PORT
TYPEORM_USERNAME
TYPEORM_PASSWORD
TYPEORM_DATABASE
Para o upload de arquivos é possível, por padrão, utilizar duas opções:
- Upload para um diretório local (diretório
tmp
) ou; - Upload para o IBM Cloud Object Storage
Caso opte pelo upload no diretório local basta modificar a variável STORAGE_TYPE
para local.
Caso opte pelo upload para o IBM COS, certifique-se de possuir uma conta na plataforma. É possível adquirir uma conta gratuíta com diversos benefícios.
Modifique a variável STORAGE_TYPE
para cos. Em seguida modifique as seguintes variáveis:
IBM_ENDPOINT
IBM_API_KEY_ID
IBM_SERVICE_INSTANCE_ID
IBM_BUCKET
Em caso de dúvidas para localizar os valores destas variáveis é possível encontrar informações detalhadas aqui e aqui.
Após concluir os passos anteriores execute os seguintes comandos:
# Executa as migrations
# Uma vez que todas as migrações estão feitas não é necessário-las
$ yarn typeorm migration:run
// ou npm run typeorm migration:run
# Para executar a API em ambiente de desenvolvimento
$ yarn dev
// ou npm run dev
Para testar a aplicação utilizando o Insomnia clique no botão abaixo para criar um workspace com todas as rotas necessárias.
- NodeJS
- Express
- Typescript
- TypeORM
- Postgres
- JSON Web Token
- Multer
- IBM Cloud Object Storage
- Babel
- ESlint
- Prettier
- EditorConfig
Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.