Projeto desenvolvido para Disciplina de Engenharia de Software da Universidade Federal de Pernambuco.
Backend da plataforma MentorIA, um tutor digital inteligente que identifica dificuldades dos estudantes, gera trilhas de treinamento personalizadas e guia até o domínio completo das competências para ENEM, com potencial de expansão para ITA, IME, concursos e outros aprendizados.
✅ Este repositório corresponde ao backend. O frontend está disponível aqui.
✅ Build aqui
✅ Contributing aqui
- Transformar a forma como estudantes identificam seus pontos fortes e fracos
- Utilizar tecnologia, IA e gamificação para acelerar o progresso do aprendizado
- Criar uma experiência personalizada e adaptativa para cada estudante
- Implementar sistema de competências baseado em domínio real
- 🔐 Sistema de Autenticação Unificado - Supabase Auth + JWT
- 🧠 Teste de Nivelamento Inteligente - 26 questões para mapear competências
- 🎯 Questões Dinâmicas - Baseadas no nível de competência do usuário
- Dashboard de Estatísticas Avançado - Progresso por tópico e competência
- 🔄 Sistema de Competências Adaptativo - Níveis 0-3 com evolução automática
- 📱 API RESTful Completa - Endpoints para todas as funcionalidades
- 🏆 Gamificação - Sequência de estudo, conquistas e progresso
- 🚀 Revisão Inteligente - Spaced repetition para retenção eficiente
plaintext src/ ├── controllers/ # Controladores da API REST ├── services/ # Lógica de negócio e integrações ├── repositories/ # Camada de acesso a dados ├── entities/ # Entidades do domínio ├── models/ # Modelos de dados ├── routes/ # Definição de rotas ├── middlewares/ # Middlewares de autenticação e validação ├── database/ # Configurações do banco de dados ├── config/ # Configurações do Supabase ├── utils/ # Utilitários e helpers ├── di/ # Injeção de dependências └── tests/ # Testes unitários e de integração
- Clean Architecture - Separação clara de responsabilidades
- Dependency Injection - Inversão de controle
- Repository Pattern - Abstração do acesso a dados
- Service Layer - Lógica de negócio centralizada
- Middleware Pattern - Autenticação e validação
| Camada | Tecnologias |
|---|---|
| Runtime | Node.js (v18+) |
| Framework | Express.js |
| Linguagem | TypeScript |
| Banco de Dados | PostgreSQL (Supabase) |
| Autenticação | Supabase Auth + JWT |
| ORM | Sequelize |
| Testes | Vitest + Supertest |
| Validação | class-validator + class-transformer |
| Logging | Pino |
| Deploy | Railway/Neon |
- Node.js (v18+)
- npm
- Conta no Supabase
- PostgreSQL (fornecido pelo Supabase)
-
Clone o repositório: bash git clone https://github.com/Luanromancin/mentorIA-backend.git cd mentorIA-backend
-
Instale as dependências: bash npm install
-
Configure o ambiente: bash cp env.supabase.example .env
- Configure o Supabase:
- Crie um projeto no Supabase
- Execute o script docs/supabase-schema.sql no SQL Editor
- Configure as variáveis de ambiente
-
Execute as migrações: bash npm run migrate
-
Inicie o servidor: bash npm start
A API estará disponível em: http://localhost:3000/api
bash npm run start:dev # Desenvolvimento com hot reload npm run build # Build para produção npm run prod # Executar em produção npm run test # Executar todos os testes npm run test:leveling # Teste específico de nivelamento npm run test:coverage # Testes com cobertura npm run lint # Linting e formatação npm run validate # Validação completa (lint + test + type-check)
- POST /api/auth/register - Registro de usuário
- POST /api/auth/login - Login
- GET /api/auth/validate-token - Validação de token
- POST /api/leveling-test/start - Iniciar teste
- POST /api/leveling-test/answer - Responder questão
- POST /api/leveling-test/complete - Finalizar teste
- GET /api/leveling-test/status - Status do teste
- GET /api/questions/session - Carregar sessão de questões
- POST /api/questions/session/complete - Finalizar sessão
- GET /api/questions/dynamic - Questões dinâmicas (legado)
- GET /api/statistics/user - Estatísticas do usuário
- POST /api/statistics/record-answer - Registrar resposta
- GET /api/statistics/topics - Tópicos disponíveis
bash
curl -X POST http://localhost:3000/api/auth/login
-H "Content-Type: application/json"
-d '{"email": "user@example.com", "password": "password123"}'
curl -X POST http://localhost:3000/api/leveling-test/start
-H "Authorization: Bearer YOUR_TOKEN"
bash npm run test # Todos os testes npm run test:leveling # Teste de nivelamento npm run test:coverage # Com cobertura npm run test:integration # Testes de integração
- Unitários: Serviços e utilitários
- Integração: Controllers e rotas
- E2E: Fluxos completos (teste de nivelamento)
env
SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_anon_key SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
PORT=3000 NODE_ENV=development
JWT_SECRET=your_jwt_secret
- Crie um projeto no Supabase
- Execute o schema SQL em docs/supabase-schema.sql
- Configure as políticas RLS
- Configure as variáveis de ambiente
- Pino para logging estruturado
- Logs de performance e erros
- Rastreamento de requisições
- Tempo de resposta das APIs
- Taxa de erro
- Uso de recursos
- Fork o repositório
- Crie uma branch: git checkout -b feature/nova-funcionalidade
- Faça commit: git commit -m 'feat: adiciona nova funcionalidade'
- Envie a branch: git push origin feature/nova-funcionalidade
- Crie um Pull Request
- feat: Nova funcionalidade
- fix: Correção de bug
- docs: Documentação
- test: Testes
- refactor: Refatoração
- Documentação da API
- Guia de Integração
- Arquitetura do Sistema
- Otimizações de Performance
- Teste de Nivelamento
- Antonio Gabriel - GitHub
- Gabriela Lima Sotero - GitHub
- Luan Romancini - GitHub
- Wilton Sales - GitHub
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
MentorIA - Transformando a educação através da tecnologia e inteligência artificial.