Este projeto foi desenvolvido para a disciplina de Projeto de Extensão 2, realizado em parceria com o NAPNE do Campus IFSP - CJO. A aplicação possui como objetivo auxiliar alunos com TEA no processo de Abstração Matemática, por meio de exercícios simples, que exploram pcitogramas para visualização e correlação com os números. Ainda, foi utilizada a API REST ARASAAC para pictogramas.
- Dashboard Interativo: Interface do usuário que mostra o progresso.
- Cadastro de usuários com validação de campos e senha segura
- Login com autenticação e resposta com usuario_ID
- Registro de sessões para controle de uso
- Registro de progresso em exercícios
- Sistema de trilha com identificação do “próximo exercício”
- Painel de configurações com tema claro/escuro (armazenado por usuário)
- Serviço de pictogramas para ilustrar exercícios
- Logs detalhados com Winston (informações, warnings, erros)
- Servidor estático completo (HTML, CSS, JS, imagens, áudios)
- Express – framework principal do servidor
- Cors – para habilitar requisições cross-origin (CORS)
- Dotenv – para variáveis de ambiente
- Winston – para logging de eventos, erros e requisições
- Bcrypt – para criptografar senhas
- Axios – para fazer requisições HTTP externas (API Arasaac)
- Mysql2 – driver de acesso ao banco de dados
- Path – módulo nativo do Node.js para lidar com caminhos de arquivos
- API ARAASAC - API REST para pictogramas ARASAAC e dados relacionados. Disponível para desenvolvedores.
- Disponível em: https://beta.arasaac.org/developers/api
/backEndRepository/dbConnection.js – conexão com banco
/frontEndRepository/css, /js, /img, /views, /audio – arquivos estáticos e HTML
O frontend espera que o backend forneça os seguintes endpoints:
- `POST /api/usuarios´ – cria novo usuário com hash de senha
- `GET /api/usuarios´ – lista todos os usuários
- `GET /api/usuarios/:id´ – retorna dados de um usuário específico
- `PUT /api/usuarios/:id´ – atualiza campos de um usuário
- `DELETE /api/usuarios/:id´ – deleta um usuário
- `POST /api/exercicios´ – cadastra 1 ou mais exercícios (com validações)
- `GET /exercicios´ – lista todos os exercícios
- `GET /api/exercicios/codigo/:codigo´ – busca exercício por codigo
- `POST /login´ – autenticação via e-mail e senha
- `POST /api/sessoes/criar´ – cria sessão para um usuário
- `GET /api/sessoes/usuario/:sessao_ID´– retorna o usuário da sessão
- `POST /api/progresso/registrar´ – registra progresso do usuário no exercício
- `GET /api/progresso/:usuario_ID/:exercicio_ID´ – progresso individual
- `GET /progresso/:usuario_ID´ – lista exercícios realizados
- `GET /api/progresso/proximo/:usuario_ID´ – retorna o próximo exercício na trilha
- `GET /api/configuracoes/:usuario_ID´ – busca tema salvo
- `PUT /api/configuracoes/:usuario_ID´ – atualiza/insere tema do usuário
- `GET /api/pictogramas/:busca´ – busca pictogramas na API Arasaac
- Registro de novos usuários com validação de campos e e-mail
- Armazenamento seguro de senhas com bcrypt
- Login com e-mail e senha
- Retorno do usuario_ID após login para uso no front-end
- Logs detalhados de tentativas de login com Winston
- Cadastro de exercícios com alternativas, nível e código único
- Validação automática de alternativas e resposta correta
- Consulta de todos os exercícios ou por código específico
- Armazenamento estruturado no banco de dados com JSON
- Suporte à trilha de aprendizado (ordem dos exercícios)
- Registro automático do progresso em exercícios resolvidos
- Verificação se um exercício já foi feito
- Exibição de progresso geral por usuário
- Recomendação do próximo exercício na trilha
- Detecção automática de conclusão da trilha
- Criação de sessões com status ativo e horário de início
- Identificação do usuário ativo por sessão
- Estrutura pronta para controle de tempo de uso
- Armazenamento de preferências de tema (ex: claro/escuro)
- Atualização de configurações individuais por usuário
- Busca de pictogramas relacionados a palavras-chave
- Retorno dinâmico de resultados para enriquecer os exercícios
- Servir HTML, CSS, JS, imagens e áudios diretamente via rotas
- URLs amigáveis para páginas principais (cadastro, trilha, etc.)
- Encerramento manual do servidor em ambiente de desenvolvimento
- Uso de Winston para logs de requisições, alertas e erros
- Separação de arquivos estáticos para evitar logs excessivos
- Validações de dados no back-end para evitar inserções inválidas
- dotenv para ocultar senhas, portas e configs sensíveis
- Separação lógica entre back-end e front-end
- Estrutura modular com dbConnection.js centralizado
- Suporte para múltiplas rotas de API e páginas
Para dúvidas ou problemas:
- Verifique se o backend está rodando corretamente
- Confirme se as rotas da API estão configuradas
- Verifique o console do navegador para erros JavaScript
- Confirme se as dependências estão instaladas corretamente