Este projeto é a segunda versão da API desenvolvida para registrar e contabilizar o consumo diário de macronutrientes, que utiliza dados nutricionais da tabela TACO - UNICAMP.
- Implementação do Firebase Auth para Autorização e Autenticação;
- Uso do Prisma Client para a organização das consultas ao Banco de dados;
- Adesão do padrão OpenAPI para documentação dos endpoints;
A primeira versão dessa API pode ser conferida aqui.
A documentação dos Endpoints no padrão OpenAPI pode ser conferida no seguinte endereço:
Para acessar rotas autenticadas, será necessário obter um Access Token, fornecido pelo Firebase Auth.
É possível obter um Access Token válido sem a necessidade do Frontend, através da aplicação React standalone que foi implementada neste repositório, e está disponível em:
Mais informações a respeito da aplicação standalone em /standalone_authentication.
Esta API pode ser executada em um ambiente de desenvolvimento utilizando o Docker:
-
Clone o repositório:
git clone https://github.com/augustolfp/dietinha_backend.git
-
Configure as variáveis de ambiente:
- Configure o .env na raiz do projeto, conforme o padrão do .env.example;
- Crie uma instância na plataforma Firebase Auth, e configure as credenciais no privatekey.json, no caminho ./src/firebase, conforme o padrão do privatekey.example.json;
-
Execute o comando na raiz do projeto para rodar o ambiente de desenvolvimento:
docker compose -f docker-compose-dev.yml up --build
-
A API estará disponível:
- Pode ser acessada em: http://localhost:3001/v2;
- Um contâiner rodando o pgAdmin será configurado. Para acompanhar o Banco de dados, acesse: http://localhost:5555. Credenciais padrão estão disponíveis no arquivo Docker-compose-dev;
- Existe um Bind Mount configurado no arquivo Docker de desenvolvimento, de modo que alterações no código refletem automaticamente na instância local.
- A API está configurada em uma Instância EC2 da AWS, e compartilha um Application Load Balancer com sua versão antiga. A estrutura pode ser vista no diagrama a seguir:
- Um Github runner está configurado para rodar quando há uma alteração na Branch main, aplicando as modificações em produção.
PS: Para utilizar o runner, é necessário configurá-lo na instância desejada, e adicionar as Secret Variables no Github, conforme a nomeação presente no workflow "deploy.yml".