Voltar para projects
14 de jun. de 2023
4 min read

Formula 1

Sistema completo com consultas e manipulação de dados reais da Fórmula 1, incluindo corridas, pilotos, equipes e estatísticas.

Capa

🏁 Sobre o projeto

Formula 1 é um sistema web desenvolvido como parte da disciplina SCC0541 - Laboratório de Banco de Dados, com o objetivo de facilitar a visualização e manipulação de dados reais da Fórmula 1. Diante do grande volume de informações sobre corridas, pilotos e equipes, criamos uma solução acessível, dinâmica e interativa para análise desses dados.


🔧 Como foi desenvolvido

O projeto foi realizado em cerca de uma semana e meia, com foco principal no backend e na modelagem relacional. Utilizamos:

  • Python com Flask no backend
  • PostgreSQL como banco de dados
  • Docker para simular e isolar o ambiente
  • HTML5 + CSS3 com templates Jinja2 no frontend

O frontend foi propositalmente simples, sem frameworks modernos, pois o foco da disciplina era o domínio do banco de dados.


⚙️ Tecnologias e decisões

As escolhas tecnológicas foram feitas com base na praticidade e no foco acadêmico:

  • Flask + Python: leveza e agilidade para prototipação e integração com o banco
  • PostgreSQL: banco robusto, amplamente utilizado em ambiente acadêmico e corporativo
  • Docker: agilidade para simular o ambiente sem complicações
  • Jinja2: integração simples com Flask para renderização de páginas dinâmicas

Optamos por não utilizar frameworks modernos de frontend como React ou Vue, para manter o foco total na lógica e nas consultas SQL.


📚 Aprendizados

Este projeto me permitiu aplicar e consolidar diversos conceitos avançados de banco de dados:

  • Modelagem relacional eficiente
  • Window Functions e consultas SQL complexas
  • Views, Triggers, Functions e Stored Procedures
  • Otimização com índices
  • Integração backend com banco de dados real via Flask

Foi um exercício prático e direto ao ponto, focado na robustez e poder dos bancos relacionais.


🧠 Experiência de desenvolvimento

Sem dúvida, foi o projeto mais intenso da graduação. Tínhamos apenas uma semana para entregar tudo, e felizmente eu estava ao lado de pessoas em quem confio muito para codar. Desde o primeiro dia, já estávamos com a mão no código.

Com base nos requisitos da disciplina, identificamos dois pilares:

  • Banco de dados: o centro de tudo
  • Interface: poderia ser via terminal, mas optamos por um website completo com SSR usando Flask e Jinja2

A escolha de Flask veio da minha experiência pessoal tentando criar um site do zero em HTML/CSS puro (falei mais sobre isso no projeto Website Antigo). O conhecimento acumulado foi essencial para que conseguíssemos entregar algo funcional rapidamente.

Claro que, sob pressão, algumas práticas foram deixadas de lado. Por exemplo, utilizamos classes estáticas sem instanciamento para agilizar a lógica (exemplo aqui) e deixamos de implementar testes automatizados. Mas o foco era um só: fazer funcionar, e fizemos.

No fim, entregamos um sistema completo, funcional e que representou muito para mim em termos de aprendizado técnico e trabalho em equipe. Se tivéssemos mais tempo e maturidade técnica na época, tenho certeza de que conseguiríamos aplicar as boas práticas sem perder produtividade.


🔮 Próximos passos

Com mais tempo e refatoração, o sistema pode evoluir bastante. Algumas ideias de melhoria incluem:

  • Modularização do backend com bons padrões como MVC ou outro que se aplique.
  • Criação de um frontend moderno e interativo com foco em UX
  • Implementação de testes automatizados
  • Reforço na experiência de navegação e visualização de dados

Este projeto mostrou na prática como um bom banco de dados, aliado a uma interface simples e eficaz, pode entregar muito valor. Foi uma das experiências mais marcantes da minha formação como desenvolvedor.

🚧 Seção de comentários em construção 🚧