Aplicação web full stack desenvolvida para fornecer aos usuários a probabilidade de atraso de voos, utilizando como base dados oficiais disponibilizados pela ANAC (Agência Nacional de Aviação Civil).
O projeto tem como objetivo principal demonstrar uma solução tecnológica integrada entre diferentes stacks, permitindo o cálculo preditivo a partir de parâmetros informados pelo usuário.
A aplicação é composta por três camadas:
- API em Python utilizando FastAPI para processamento dos dados da ANAC
- Backend em Java com Spring Boot responsável pelas regras de negócio
- Frontend em React.js e Tailwind CSS para interface com o usuário
- O usuário acessa a interface web
- Preenche corretamente todos os campos do formulário
- O frontend envia uma requisição HTTP para o backend Java
- O Spring Boot realiza validações dos dados recebidos
- O backend encaminha a requisição para a API Python
- A API FastAPI processa os dados e calcula a probabilidade
- O backend retorna o resultado ao frontend com status 200 OK
- A probabilidade é exibida ao usuário na tela
A pasta data contém a API desenvolvida em Python com FastAPI. Esta camada é responsável por:
- Leitura e manipulação dos dados históricos da ANAC
- Processamento das informações recebidas
- Aplicação de modelos estatísticos ou de machine learning
- Cálculo da probabilidade de atraso
- Retorno estruturado das informações em formato JSON
- Validações internas e tratamento de exceções
A API recebe parâmetros como:
- Aeroporto de origem
- Aeroporto de destino
- Companhia aérea
- Data e horário do voo
Com base nesses dados, é realizado o processamento para gerar a probabilidade de atraso.
- json { "probabilidadeAtraso": 0.27 }
Tecnologias Utilizadas
- Java
- Spring Boot
- Spring Data JPA
- MySQL
- Bean Validation
- Cliente HTTP para integração com FastAPI
- Tratamento global de erros
O backend em Spring Boot é o núcleo da aplicação, sendo responsável por: Expor endpoint REST para o frontend Realizar validações dos dados enviados pelo cliente Tratar erros de entrada Fazer a comunicação com a API Python Processar respostas recebidas Retornar resultado final com status HTTP adequado
Método: POST URL: http://localhost:8000 Entrada: JSON com dados do voo Saída: Probabilidade de atraso
200 OK – cálculo realizado com sucesso 400 Bad Request – erro de validação nos parâmetros 500 Internal Server Error – falha inesperada
Mensagens padronizadas de erro ao usuário
Tecnologias Utilizadas
- React.js
- Tailwind CSS
- Axios
- Componentização
- Validações no lado do cliente
- Design responsivo
O frontend oferece uma interface intuitiva com formulário para coleta das informações. A requisição ao backend só é realizada após o preenchimento correto de todos os inputs obrigatórios. Fluxo no Frontend Usuário informa os dados do voo no formulário Sistema valida os campos obrigatórios Axios envia requisição POST para o backend Java Resultado é retornado e exibido na interface
Exemplo de Requisição com Axios axios.post("/api/probabilidade-atraso", dadosVoo) .then(response => { setProbabilidade(response.data.probabilidadeAtraso) }) .catch(error => { tratarErro(error.response.data) })
✅ Validações e Tratamento de Erros
A aplicação possui mecanismos para garantir integridade e confiabilidade: Validações prévias no frontend Validações robustas no backend Spring Boot Tratamento de exceções na API Python Mensagens claras e padronizadas
Utilização correta de códigos de status HTTP
🔗 Integrações Externas
Base de dados histórica da ANAC Comunicação entre backend Java e API Python Infraestrutura em nuvem através dos cursos ONE Tech Oracle
🎯 Objetivo do Projeto
Fornecer uma ferramenta acessível que permita: Auxiliar passageiros na tomada de decisão Demonstrar integração entre tecnologias distintas Aplicação prática de arquitetura distribuída Exibir boas práticas REST e tratamento de erros Apresentar competência técnica em Java, React e Python
🚀 Possíveis Evoluções
- Melhoria do modelo preditivo
- Inclusão de novos parâmetros
- Dashboard analítico
- Autenticação de usuários
- Ampliação para outros países
👨💻 Autor
Ayran Vieira GitHub: github.com/ayrandev LinkedIn: linkedin.com/in/ayran-vieira-dev