A F1 Rest API é um projeto construído em .NET 7 que fornece uma API REST modelada no estilo da PokeAPI, mas para dados da Fórmula 1. Os dados utilizados são extraídos de arquivos CSV e importados para o banco de dados utilizando scripts em JavaScript. Este projeto oferece uma API para gerenciar informações sobre pilotos e construtores da Fórmula 1. A documentação da API é interativa e acessível através do Swagger.
Os dados são provenientes do dataset da Fórmula 1 World Championship 1950-2020 disponível no Kaggle.
- 📋 CRUD de Pilotos e Construtores
- 🔗 Relacionamentos muitos-para-muitos entre Pilotos e Construtores
- 🧪 Testes Unitários para garantir a qualidade do código
- 📈 Monitoramento com Prometheus e visualização com Grafana
- 🔒 Autenticação JWT
- 🛠️ Documentação com Swagger
- Linguagem: C# com .NET 7
- Banco de Dados: PostgreSQL
- Documentação: Swagger
- Monitoramento: Prometheus
- Visualização: Grafana
- Containerização: Docker
A F1 Rest API está implantada em um Orange Pi Zero 3, utilizando containers Docker para gerenciar a aplicação e os serviços associados. O ambiente de produção foi configurado para garantir a estabilidade e a eficiência do sistema, aproveitando a leveza e a flexibilidade dos containers Docker.
- Processador: Quad-core Cortex-A55
- Memória: 2 GB DDR3
- Armazenamento: Armazenamento via cartão SD
- Sistema Operacional: Alpine Linux
- Containers: Containers Docker para a API, PostgreSQL, Prometheus e Grafana
Este ambiente foi escolhido para otimizar o consumo de energia e o custo, mantendo a capacidade necessária para rodar todos os componentes do projeto.
-
Clone o repositório:
git clone https://github.com/FabioCeleste/F1API.git
-
Navegue até o diretório do projeto:
cd F1API
-
Configure as variáveis de ambiente:
- .env na raiz do projeto
- Configure o arquivo appsettings.json em ./F1RestAPI
-
Navegue até o diretório da API:
cd F1RestAPI
-
Inicie o contêiner com o banco de dados:
docker-compose up -d --build
-
Execute as migrações do Entity Framework:
dotnet ef database update
-
Reinicie os contêineres:
docker-compose up -d --build
As métricas do sistema são coletadas pelo Prometheus e podem ser visualizadas através do Grafana. As configurações podem ser ajustadas no arquivo prometheus.yml.