Aplicativo de triagem básica e treino de acuidade visual otimizado para TV, desenvolvido com Nuxt 4. Projetado para uso com controle remoto (D-Pad), sem dependência de mouse ou teclado.
Este aplicativo NÃO é um dispositivo médico. É uma ferramenta de triagem básica e treino de acuidade visual. Não substitui um exame oftalmológico profissional. Não use para decisões críticas (ex.: dirigir). Os resultados variam com iluminação e configuração da TV.
- TV-First Design: Interface otimizada para TV com navegação 100% por D-Pad
- Múltiplos Testes de Acuidade Visual:
- Teste Snellen (letras)
- Teste ETDRS (padrão clínico)
- Teste Pediátrico (símbolos)
- Teste E Rotacionado
- Teste Landolt C
- Calibração Precisa: Sistema de calibração por distância e tamanho de tela
- Modo Diurno/Noturno: Alternância entre temas claro e escuro
- Alto Contraste: Modo de alto contraste para melhor visibilidade
- Modo Assistido: Interface para acompanhantes controlarem o teste
- Modo Pro: Funcionalidades avançadas com PIN (travar calibração, contador de sessões)
- Nuxt 4: Framework Vue.js para aplicações full-stack
- TypeScript: Tipagem estática
- Pinia: Gerenciamento de estado
- Vue 3: Framework JavaScript reativo
- Vitest: Testes unitários
- Playwright: Testes end-to-end
- Node.js 18+
- npm, pnpm, yarn ou bun
-
Clone o repositório:
git clone https://github.com/andreagnoletto/visual-acuity.git cd visual-acuity -
Instale as dependências:
npm install
# ou
pnpm install
# ou
yarn install
# ou
bun install-
Baixe a fonte OpticianSans:
- A fonte
OpticianSans.woff2deve ser colocada emapp/assets/fonts/ - Consulte
app/assets/fonts/README.mdpara mais informações
- A fonte
Inicie o servidor de desenvolvimento:
npm run dev
# ou
pnpm dev
# ou
yarn dev
# ou
bun run devO aplicativo estará disponível em http://localhost:3000
npm run build
# ou
pnpm build
# ou
yarn build
# ou
bun run buildPara preview da build de produção:
npm run preview
# ou
pnpm preview
# ou
yarn preview
# ou
bun run previewvisual-acuity-app/
├── app/
│ ├── assets/
│ │ ├── css/ # Estilos globais e temas
│ │ └── fonts/ # Fonte OpticianSans
│ ├── components/ # Componentes Vue reutilizáveis
│ ├── composables/ # Composables Vue (lógica reutilizável)
│ ├── domain/
│ │ └── vision/ # Lógica de domínio (cálculos, validações)
│ ├── layouts/ # Layouts da aplicação
│ ├── pages/ # Páginas/rotas
│ │ ├── index.vue # Home
│ │ ├── setup/ # Calibração
│ │ ├── test/ # Testes de acuidade
│ │ └── settings/ # Configurações
│ └── stores/ # Stores Pinia
├── tests/
│ ├── unit/ # Testes unitários
│ └── e2e/ # Testes end-to-end
└── public/ # Arquivos estáticos
O aplicativo foi projetado para navegação exclusiva por controle remoto:
- ↑↓←→: Navegação entre elementos
- Enter/Space: Confirmar seleção
- Esc/Backspace: Voltar/navegar para trás
A navegação usa roving tabindex para garantir que apenas um elemento esteja focável por vez, otimizando a experiência em TV.
Antes de usar os testes, é necessário calibrar:
- Distância: Configure a distância entre o paciente e a TV (3-6m ou customizada)
- Tela: Calibre o tamanho da tela usando um cartão de referência de 85,6mm
O Modo Pro oferece funcionalidades avançadas:
- Travar calibração (impedir alterações acidentais)
- Contador de sessões
- Alteração de PIN
PIN padrão: 1234
Execute os testes unitários:
npm run testExecute os testes end-to-end:
npm run test:e2eEste projeto está licenciado sob a MIT License.
Contribuições são bem-vindas! Por favor:
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Para questões ou sugestões, abra uma issue no GitHub.
Lembre-se: Este aplicativo é apenas para triagem básica e treino. Sempre consulte um profissional de saúde ocular para exames completos.