Plataforma fullstack para analise espacial de cenas roboticas. Interface web moderna com API dedicada para inferencia visual de objetos em 2D, segmentacao por instancia, pontos de interesse e caixas delimitadoras 3D.
O sistema apoia operacoes de robotica aplicada β picking, inventario visual, inspecao e manipulacao assistida β com foco em:
- Iteracao rapida de prompt e parametros de analise
- Visualizacao tecnica clara das deteccoes sobre a imagem
- Contrato de API estavel, versionado e com validacao rigorosa
- Arquitetura preparada para substituicao do simulador por motores de inferencia reais
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React 19 + Vite + TypeScript) β
β β
β βββββββββββββ¬ββββββββββββββββββββ¬βββββββββββββββββββββββ β
β β TopBar β Content Viewer β Inspector (JSON) β β
β β SideCtrls β (Canvas + SVG) β Request / Response β β
β β Examples β Overlays β β β
β β DetectSel β DrawMode β β β
β β Prompt β β β β
β βββββββββββββ΄ββββββββββββββββββββ΄βββββββββββββββββββββββ β
β β β
β βββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ β
β β Jotai Atoms (state) β β
β β image Β· detections Β· ui Β· config Β· session β β
β βββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ β
β β services/spatialApi.ts (HTTP client + fallback) β β
β β services/validators.ts (runtime type guards) β β
β βββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ
β Vite proxy /api β :8787
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ
β Backend (Express 5 + Zod + Helmet) β
β β
β POST /api/v1/spatial/analyze β
β GET /api/v1/health β
β β
β β’ Zod schema validation β
β β’ Per-IP rate limiting (80 req/min) β
β β’ Content-Security-Policy via Helmet β
β β’ Structured JSON logging β
β β’ simulateSpatialAnalysis (shared/spatialSimulation.ts) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Modo | Saida | Uso tipico |
|---|---|---|
| 2D Bounding Boxes | [x, y, w, h] normalizado 0-1 |
Picking, contagem |
| Segmentation Masks | Caixa + mascara SVG por instancia | Inspeccao, separacao |
| Points | Ponto (x, y) normalizado |
Planejamento de garra |
| 3D Bounding Boxes | [cx,cy,cz, l,w,h, rx,ry,rz] |
Manipulacao assistida |
Frontend: React 19, TypeScript 5.8, Vite 6, Jotai, perfect-freehand Backend: Express 5, Zod, Helmet, CORS Qualidade: Vitest, ESLint (typescript-eslint strict), Prettier, GitHub Actions CI
.
βββ App.tsx # Layout principal
βββ Content.tsx # Viewer de imagem + overlays de deteccao
βββ Prompt.tsx # Painel de configuracao e execucao
βββ TopBar.tsx # Cabecalho e controles globais
βββ SideControls.tsx # Upload e modo de anotacao
βββ DetectTypeSelector.tsx # Seletor de modo de deteccao
βββ ExampleImages.tsx # Cenarios de exemplo (SVG procedural)
βββ ExtraModeControls.tsx # Toolbar de anotacao
βββ Palette.tsx # Seletor de cor para anotacoes
βββ ErrorBoundary.tsx # React error boundary
βββ atoms.tsx # Estado global (Jotai)
βββ hooks.tsx # useResetState
βββ Types.tsx # Tipos de dominio (union discriminada)
βββ consts.tsx # Templates, exemplos e opcoes
βββ utils.tsx # Utilitarios puros
βββ services/
β βββ spatialApi.ts # Cliente HTTP com fallback local
β βββ validators.ts # Guards de runtime
βββ shared/
β βββ spatialSimulation.ts # Simulador deterministico (RNG com seed)
βββ server/
β βββ index.ts # API Express
β βββ logger.ts # Logger JSON estruturado
βββ tests/
β βββ spatial.test.ts # Testes de simulacao e validacao
β βββ utils.test.ts # Testes de utilitarios
βββ .github/
βββ workflows/ci.yml # Pipeline CI (Node 20 e 22)
- Node.js 20+ (ver
.nvmrc) - npm 10+
# 1. Instalar dependencias
npm install
# 2. Copiar variaveis de ambiente
cp .env.example .env.local
# 3. Rodar frontend + API em paralelo
npm run dev- Frontend: http://localhost:3000
- API: http://localhost:8787/api/v1/health
make install # npm install
make dev # frontend + backend
make build # build de producao
make type-check # tsc --noEmit
make lint # eslint
make fmt # prettier --write
make test # vitest run
make coverage # vitest run --coverage
make ci # type-check + lint + fmt:check + test + build1. Selecionar imagem (upload ou cenario de exemplo)
β
βΌ
2. Escolher modo de deteccao
β
βΌ
3. Configurar: modelo, alvo, prompt, temperatura, FOV
β
βΌ
4. (Opcional) Anotar sobre a imagem
β
βΌ
5. Executar analise β POST /api/v1/spatial/analyze
β
βΌ
6. Resposta validada β overlays na imagem + JSON no inspector
| Variavel | Padrao | Descricao |
|---|---|---|
VITE_SPATIAL_API_BASE_URL |
/api/v1 |
Base da API no frontend |
VITE_SPATIAL_API_TIMEOUT_MS |
15000 |
Timeout da requisicao HTTP (ms) |
VITE_ENABLE_LOCAL_FALLBACK |
true |
Ativa simulador local se API falhar |
VITE_SPATIAL_API_PROXY_TARGET |
http://localhost:8787 |
Alvo do proxy Vite |
PORT |
8787 |
Porta do servidor Express |
SPATIAL_ALLOWED_ORIGIN |
* |
Origem permitida no CORS |
| Comando | Descricao |
|---|---|
npm run dev |
Frontend + backend em paralelo |
npm run dev:web |
Apenas frontend |
npm run dev:api |
Apenas backend |
npm run build |
Build de producao |
npm run preview |
Preview do build |
npm run type-check |
Verificacao de tipos TypeScript |
npm run lint |
ESLint (typescript-eslint strict) |
npm run lint:fix |
ESLint com correcao automatica |
npm run fmt |
Prettier (formatar) |
npm run fmt:check |
Prettier (verificar) |
npm test |
Vitest (execucao unica) |
npm run test:watch |
Vitest modo watch |
npm run test:coverage |
Vitest com relatorio de cobertura |
npm run build
# Publicar dist/ em Vercel, Netlify, Cloudflare Pages ou S3+CDN# Container ou PaaS Node 20+
# Expor /api/v1/* via HTTPS
# Definir VITE_SPATIAL_API_BASE_URL para a URL publica da API- Autenticacao com RBAC para ambientes multiusuario
- Persistencia de sessoes e historico de analises
- Observabilidade completa (traces distribuidos, metricas Prometheus)
- Suite de testes de integracao da API e E2E com Playwright
- Integracao com motores de inferencia reais em ambiente produtivo
Desenvolvido por Matheus Siqueira
- Website: matheussiqueira.dev
- GitHub: @matheussiqueira-dev
- Repositorio: Robotics-Spatial-Understanding