Skip to content

lkmb-lab/tapl-experimento-2

Repository files navigation

EXPERIMENTO 2

Sistema de gestão acadêmica com frontend em React e backend em Node.js/TypeScript.

Funcionalidades

Permite:

  • Cadastrar e editar alunos
  • Cadastrar e editar turmas
  • Matricular alunos em turmas
  • Registrar avaliações por meta
  • Consolidar notificações por aluno em lotes diários
  • Enviar email diário com todas as alterações de avaliação

Tecnologias

  • Frontend: React + TypeScript + Vite
  • Backend: Node.js + TypeScript
  • Persistência: Arquivos JSON em server/data
  • Testes de aceitação: Cucumber em features

Estrutura do Monorepo

meu-repositorio/
├── client/          # Aplicação web (React)
├── server/          # API e regras de negócio
├── sistema/         # Código compartilhado / domínio
├── features/        # Cenários Cucumber
├── ARQUITETURA.md   # Documentação técnica
├── AGENTS.md        # Configurações de agentes
└── README.md        # Este arquivo

Requisitos

  • Node.js 20+
  • npm 10+

Instalação

Na raiz do projeto, rode:

npm install

Como Rodar

Opção 1: Comandos Separados (Recomendado)

Terminal 1 — Backend:

cd server
npm install
npm run dev

Terminal 2 — Frontend:

cd client
npm install
npm run dev

Navegador:

http://localhost:5173

Build

Na raiz:

npm run build

Ou por workspace:

cd server && npm run build
cd ../client && npm run build

Testes

Na raiz:

npm run test

Email SMTP (Envio Real)

As variáveis de exemplo estão em server/.env.example.

Crie server/.env com:

EMAIL_SENDER_MODE=smtp
SMTP_HOST=seu.hostname
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=seu-usuario
SMTP_PASS=sua-senha
SMTP_FROM=noreply@seudominio.com
ENABLE_EMAIL_SCHEDULER=true
EMAIL_DISPATCH_TIME=20:00

Com EMAIL_SENDER_MODE=smtp, o backend falha ao iniciar se o SMTP estiver incompleto.

Regra de Consolidação de Email

  • Cada alteração de avaliação entra no lote diário do aluno
  • Um email por dia — o aluno recebe apenas 1 email por dia
  • Agrupamento por turmas — esse email inclui alterações de todas as turmas do dia

Disparo

  • Automático pelo scheduler diário
  • Manual via API em POST /emails/dispatch

Endpoints Principais

Alunos

  • GET /students — listar todos
  • POST /students — criar novo
  • PUT /students/:id — atualizar
  • DELETE /students/:id — remover

Turmas

  • GET /classes — listar todas
  • POST /classes — criar nova
  • PUT /classes/:id — atualizar
  • DELETE /classes/:id — remover

Matrículas

  • POST /classes/:classGroupId/enrollments — matricular aluno
  • DELETE /classes/:classGroupId/enrollments/:enrollmentId — desmatricular

Avaliações

  • GET /classes/:classGroupId/evaluations — listar por turma
  • PUT /classes/:classGroupId/students/:studentId/meta/:metaId — atualizar conceito

Email

  • GET /emails/notifications — listar notificações pendentes
  • POST /emails/dispatch — disparar consolidação de emails
  • GET /health — verificar status da aplicação

Próximos Passos

  1. Configurar package.json com dependências iniciais
  2. Implementar modelo de domínio (entidades)
  3. Criar API REST básica
  4. Adicionar testes de aceitação com Cucumber
  5. Integrar email com Nodemailer

Projeto de TALP — Engenharia de Software

Última atualização: Abril de 2026

About

Segundo Experimento da disciplina de Tópicos Avançados em Linguagens de Programação para desenvolvimento de um sistema web (React + Node + TypeScript) com apoio de agentes de IA, incluindo testes, histórico de interações e análise crítica do uso do agente.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors