Aplicação web estática que captura gestos em LIBRAS via webcam, reconhece sinais com Visão Computacional (MediaPipe) e Machine Learning (TensorFlow.js), e converte a sequência de sinais em frases em português.
| Componente | Tecnologia |
|---|---|
| Frontend | React + TypeScript |
| Build | Vite |
| Visão Computacional | @mediapipe/tasks-vision (HandLandmarker via WASM) |
| Machine Learning | TensorFlow.js (treino e inferência no browser) |
| Persistência | IndexedDB (dataset de treino, modelo TF.js) |
| Deploy | GitHub Pages (workflow automático) |
- Node.js 18+
- npm 9+
- Navegador moderno (Chrome, Firefox, Edge, Safari)
npm install --ignore-scriptsnpm run devAcesse http://localhost:5173/tradutor-libras/ no navegador.
npm run build # gera dist/
npm run preview # preview local do buildO repositório inclui um dataset com 100 amostras de sinais em LIBRAS (dataset-libras-1783090215089.json). Cobre 19 letras do alfabeto manual (A, B, C, D, E, F, I, L, M, N, O, R, S, T, U, V, W, X, Y), com amostras para mão direita (D_) e esquerda (E_).
- Clone o repositório
- Inicie o app com
npm run dev - Clique em "Mostrar ferramentas" para expandir o painel avançado
- No painel Coleta de Dados, clique em "Importar JSON"
- Selecione o arquivo
dataset-libras-1783090215089.json - Vá ao painel Treinamento e clique em "Treinar Modelo"
- Após o treino, recarregue a página para usar o modelo TF.js
tradutor-libras/
├── src/
│ ├── components/ # Componentes React (UI)
│ │ ├── WebcamView.tsx
│ │ ├── HandCanvas.tsx
│ │ ├── DataCollectorPanel.tsx
│ │ ├── TrainingPanel.tsx
│ │ └── AlphabetCheatSheet.tsx
│ ├── modules/ # Módulos de domínio (Clean Architecture)
│ │ ├── capture/ # Wrapper do HandLandmarker (MediaPipe)
│ │ ├── inference/ # Classificadores (heurístico + TF.js)
│ │ ├── training/ # Coleta de dados e treinamento TF.js
│ │ └── nlp/ # Tradução heurística (palavras → frase)
│ ├── hooks/ # Custom hooks (useWebcam, useHandTracking, etc.)
│ ├── types/ # Tipos TypeScript
│ ├── App.tsx
│ ├── main.tsx
│ └── index.css
├── public/
│ └── images/ # Imagens estáticas (cola do alfabeto)
├── .github/workflows/ # CI + Deploy automático
├── dataset-*.json # Dataset de exemplo (100 amostras)
├── .agents/ # Definições de agentes OpenCode
├── AGENTS.md # Regras de operação do agente IA
├── PLAN.md # Plano de implementação em fases
├── specs.md # Especificações técnicas
├── design.md # Design e convenções
├── package.json
├── tsconfig.json
└── vite.config.ts
O deploy é automático via GitHub Actions. Todo push na branch main dispara o workflow .github/workflows/deploy.yml:
npm install --ignore-scriptsnpm run build- Deploy do
dist/viaactions/deploy-pages@v4
A aplicação está disponível em https://kauaamado.github.io/tradutor-libras/.
O projeto inclui definições de agentes OpenCode em .agents/:
auxiliar— Implementador: escreve código, implementa features, corrige bugsrevisor— Revisor: code review, verifica conformidade com specs
mkdir -p .opencode/agent && cp .agents/*.md .opencode/agent/Reinicie o OpenCode após copiar. A pasta .opencode/ é gitignored (config local).
O desenvolvimento utiliza os seguintes arquivos de referência:
AGENTS.md— Regras de operação, padrões de código e convençõesPLAN.md— Plano de implementação faseadospecs.md— Requisitos funcionais e não funcionaisdesign.md— Design de UI, arquitetura e convenções visuais
MIT