Este guia centraliza toda a documentação técnica do projeto Metis LMS, incluindo setup, configuração de autenticação, execução com Docker, comandos úteis e troubleshooting.
- Pré-requisitos
- Configuração Inicial
- Execução do Projeto
- Sistema de Autenticação
- Guia de Desenvolvimento
- Troubleshooting
- Referência de Comandos
- Docker 20.10+
- Docker Compose 2.0+
- Java 21+ (Opcional, para desenvolvimento local do backend)
- Node.js 18+ e pnpm (Opcional, para desenvolvimento local do frontend)
Copie os arquivos de exemplo para criar os arquivos de configuração:
# Raiz do projeto
cp .env.example .env
# Backend (opcional, se for rodar localmente sem Docker)
cp backend/.env.example backend/.env
# Frontend (opcional, se for rodar localmente sem Docker)
cp web/.env.local.example web/.env.localEdite o arquivo .env na raiz com suas credenciais. As variáveis obrigatórias são:
AZURE_CLIENT_ID=seu_client_id_do_azure
AZURE_CLIENT_SECRET=seu_client_secret_do_azure
AZURE_TENANT_ID=seu_tenant_id_do_azure # Não usado se endpoint for 'common'
JWT_SECRET=sua_chave_jwt_base64 # Gere com: openssl rand -base64 64
FRONTEND_CALLBACK_URL=http://localhost:3000/auth/callbackPara que o login com Microsoft funcione, configure sua aplicação no Azure Portal:
- Supported Account Types: Selecione
Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts. - Redirect URI: Adicione
http://localhost:8080/login/oauth2/code/microsoft(Tipo Web). - Client Secret: Gere um novo secret em "Certificates & secrets" e adicione ao
.env. - API Permissions: Adicione
openid,profile,email,User.Reade conceda "Admin consent".
Esta opção permite hot-reload no backend e frontend.
-
Suba a infraestrutura (MongoDB e Redis):
docker-compose up -d mongo redis
-
Execute o Backend:
cd backend ./mvnw spring-boot:run -
Execute o Frontend:
cd web npm install npm run dev
Ideal para validar o ambiente completo ou para produção.
docker-compose up -d- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
- Mongo Express: http://localhost:8081 (Login:
admin/admin123)
O sistema utiliza Microsoft OAuth2 + JWT.
- Login: Suporte a contas pessoais (@outlook.com) e organizacionais (@mackenzie.br).
- Logout: Invalidação de token via blacklist no Redis/Mongo.
- Roles: Controle de acesso (RBAC).
Por padrão, o sistema aceita:
@mackenzie.br@mackenzista.com.br@outlook.com
Para alterar, edite backend/src/main/resources/application-dev.yaml.
ROLE_USER: Todos os usuários autenticados.ROLE_STUDENT: Emails@mackenzista.com.br.ROLE_ADMIN: Emails configurados na lista de admins noapplication.yaml.
- Compilar:
./mvnw clean compile - Testar:
./mvnw test - Rodar com profile dev:
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
- Instalar deps:
pnpm install - Dev server:
pnpm dev - Build:
pnpm build - Lint:
pnpm lint
backend/src/main/java/com/metis/backend/auth/: Lógica de autenticação.web/context/AuthContext.tsx: Contexto de autenticação no React.web/components/ProtectedRoute.tsx: Componente para proteger rotas.
- Verifique se
AZURE_CLIENT_SECRETestá correto e não expirou. - Confirme se o Redirect URI no Azure Portal é exatamente
http://localhost:8080/login/oauth2/code/microsoft.
- O email utilizado não pertence à lista de domínios permitidos. Adicione o domínio em
application-dev.yamlse necessário.
- Se rodando localmente, garanta que os containers
mongoeredisestão de pé (docker-compose ps). - Se rodando tudo no Docker, verifique os logs:
docker-compose logs backend.
Se receber erro de porta em uso:
sudo lsof -i :8080 # Backend
sudo lsof -i :3000 # Frontend
sudo lsof -i :27017 # MongoMate o processo ou altere a porta no docker-compose.yml.
# Iniciar infra
docker-compose up -d mongo redis
# Ver logs
docker-compose logs -f
# Parar tudo e remover volumes (CUIDADO: apaga dados)
docker-compose down -v# Acessar shell
docker exec -it metis-mongo mongosh
# Backup
docker exec metis-mongo mongodump --out=/data/backup --db=metis# Acessar CLI
docker exec -it metis-redis redis-cli