Interface front-end para o sistema Time Trial — uma aplicação que exibe em tempo real os rankings de voltas cronometradas de carrinhos Hot Wheels em uma pista instrumentada com sensores.
⚙️ Este repositório é o front-end da aplicação. O back-end (API REST + WebSocket + MQTT) está disponível em: 👉 https://github.com/PabloTzeliks/time-trial-api
O Time Trial UI é uma Single Page Application (SPA) construída com React e TypeScript que consome em tempo real os dados gerados pela pista de corrida instrumentada.
A comunicação em tempo real entre o front-end e o back-end é realizada através de WebSocket, com as camadas de transporte e mensageria fornecidas pelo SockJS e pelo protocolo STOMP:
- SockJS estabelece a conexão com o endpoint
/ws-time-trialexposto pelo back-end Spring Boot, garantindo compatibilidade com ambientes que não suportam WebSocket nativo por meio de fallbacks HTTP. - STOMP (Simple Text Oriented Messaging Protocol) é utilizado sobre o SockJS como protocolo de mensagens, permitindo que o cliente se inscreva em tópicos específicos do servidor.
- O front-end se inscreve no tópico
/topic/painel, onde o back-end publica atualizações sempre que um novo tempo de volta é registrado pelos sensores da pista. - Ao receber uma mensagem, o payload JSON é desserializado e o estado do painel é atualizado imediatamente, refletindo em tempo real os rankings de melhores tempos e voltas mais recentes na tela.
O fluxo completo é: Sensores → MQTT → Back-end Spring Boot → WebSocket/STOMP → React UI.
- 🏆 Ranking dos 10 mais rápidos — exibe os melhores tempos registrados na pista
- 🕐 Ranking dos 10 mais recentes — exibe as últimas voltas realizadas
- 📡 Atualização em tempo real — os rankings são atualizados automaticamente via WebSocket sem necessidade de recarregar a página
- 👥 Seção de equipe — apresenta os membros do projeto
- 🌙 Tema claro / escuro — alternância de tema com persistência
| Tecnologia | Versão | Uso |
|---|---|---|
| React | 19 | Biblioteca principal de UI |
| TypeScript | 5.9 | Tipagem estática |
| Vite | 7 | Bundler e servidor de desenvolvimento |
| Tailwind CSS | 4 | Estilização utilitária |
| SockJS Client | 1.6 | Transporte WebSocket com fallback HTTP |
STOMP.js (@stomp/stompjs) |
7 | Protocolo de mensageria sobre WebSocket |
| Lucide React | — | Ícones |
- Node.js 18+
- npm ou yarn
# Clone o repositório
git clone https://github.com/jonathan7gb/time-trial-ui.git
cd time-trial-ui
# Instale as dependências
npm installnpm run devA aplicação estará disponível em http://localhost:5173.
npm run buildnpm run preview| Repositório | Descrição |
|---|---|
| time-trial-api | Back-end Spring Boot com REST API, WebSocket e integração MQTT |