Aplicação React de rastreamento de veículos com filtros e mapa integrado ao Google Maps.
Este repositório contém a aplicação Control361, desenvolvida em React + TypeScript, gerenciador global de estado com Zustand, formulários com React Hook Form + Zod e exibição de marcadores no mapa via Google Maps API.
- Filtro por status (rastreados / outros).
- Busca por placa ou frota.
- Mapas interativos com pins e infowindows.
- Estado global via Zustand.
- Validação de formulários com Zod.
- Node.js >= 18
- npm >= 8
- Docker (para ambiente conteinerizado)
- Docker Compose (opcional para dev local)
- Conta no Vercel (para deploy)
- Clone o repositório:
git clone https://github.com/GefersonLopes/control361 cd control361 - Instale as dependências:
npm ci
- Crie um arquivo
.envna raiz, copiando de.env.example:cp .env.example .env
- Ajuste as variáveis de ambiente conforme necessário.
As seguintes variáveis devem estar definidas no seu .env:
VITE_GOOGLE_MAPS_API_KEY=... # Chave da Google Maps JavaScript API
VITE_API_CLIENT_KEY=... # Token de autenticação do client
VITE_BASE_URL_API_CLIENT=... # URL base da API backend
VITE_GOOGLE_MAPS_COORDINATES_URL="https://www.google.com/maps/search/?api=1&query="Mantenha o
.envfora do controle de versão!
Execute em modo de desenvolvimento com Vite e hot-reload:
npm run dev # serve http://localhost:5173/Ou via Docker Compose:
docker compose up --build
#Após build, acesse http://localhost:5173- EXPOSE 5173
- Comando:
CMD ["npm", "run", "dev"]
services:
frontend:
build:
context: .
dockerfile: Dockerfile.dev
volumes:
- ./:/app
- /app/node_modules
ports:
- "5173:5173"
environment:
- VITE_GOOGLE_MAPS_API_KEY=${VITE_GOOGLE_MAPS_API_KEY}
- VITE_API_CLIENT_KEY=${VITE_API_CLIENT_KEY}
- VITE_BASE_URL_API_CLIENT=${VITE_BASE_URL_API_CLIENT}
- VITE_GOOGLE_MAPS_COORDINATES_URL=${VITE_GOOGLE_MAPS_COORDINATES_URL}Para rodar:
docker compose up --buildFluxo configurado via GitHub Actions:
-
CI
- Checkout do código
- Setup Node.js
- Cache npm
npm ci,npm run lint,npm test,npm run build- Upload de artefato
build/
-
Docker Build & Push (on push em
main)- Download do build
docker build -f Dockerfile→ imagem tageada por commit SHA +latest- Push no Docker Hub (opcional)
-
Deploy no Vercel
- Ação
amondnet/vercel-action@v20usandovercel.jsone secrets:- VERCEL_TOKEN, VERCEL_ORG_ID, VERCEL_PROJECT_ID
- Ação
Arquivo: .github/workflows/ci-cd.yml
O deploy utiliza Docker no Vercel, via vercel.json:
{
"version": 2,
"builds": [{ "src": "Dockerfile", "use": "@vercel/docker" }],
"routes": [{ "src": "/(.*)", "dest": "/" }]
}Defina as mesmas variáveis de ambiente no painel Vercel (Production & Preview).
control361/
├── .env.example
├── Dockerfile
├── Dockerfile.dev
├── docker-compose.yml
├── package.json
├── public/
└── src/
├── components/
├── hooks/
├── pages/
├── store/
└── utils/