A API foi desenvolvida com TypeScript e NodeJS, utilizando algumas tecnologias, incluindo:
- TypeORM
- class-validator
- express
- helmet
- JWT
- bcrypt
- Docker
Antes da execução da API é necessário incluir um arquivo .env na raiz do diretório, um exemplo .env.sample foi incluÃdo e deve ser usado como base.
Também é necessário modificar o arquivo orm.config.json com as credenciais do banco de dados instalado:
{
...
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "USERNAME",
"password": "PASSWORD",
"database": "DATABASE_NAME",
...
}Primeiramente na raiz do repositório instale as dependências do NodeJS com o comando:
>> npm install>> npm run typeorm:migration Para iniciar a API em modo de desenvolvimento, execute:
>> npm run dev Para a execução em modo de produção um container docker pode ser criado, para tal na raiz do repositório execute:
>> docker-compose up --build Após o comando algumas imagens serão baixadas e os containers serão construÃdos e executados.
Foram inclusas as imagens do mysql:5.7 e phpmyadmin, que podem ser retiradas com a edição do arquivo docker-compose.yml conforme desejado.
Para a execução no Raspberry Pi é necessário instalar os pacotes do docker, para tal execute:
>> sudo apt-get install docker docker-compose No diretório desejado clone o repositório:
>> git clone https://github.com/Asimovjr/chaveiro-smart-rest-api.gitTroque para branch feature/raspberry-pi:
>> git checkout feature/raspberry-piCrie os containers docker:
>> docker-compose up --buildEntre no container:
>> docker exec -it chaveiro-smart-rest-api_api_1 /bin/shExecute as migrations:
>> npm run typeorm:migration{
"username": "user",
"password": "password"
}{
"username": "user",
"password": "password"
}{
"username": "username",
"oldPassword": "password",
"newPassword": "newPassword"
}{
"username": "new-username"
}{
"name": "name",
"sector": "sector"
}{
"name": "new-name",
"sector": "new-sector"
}{
"position": 0
}{
"id": 1,
"available": true
}{
"available": false
}{
"id_key": 1,
"employee": {
"id": "b081c0c1-42d2-4812-b704-974b4949d5b2"
},
"action": true
}