Backlog
Visão ONG
ÉPICO 1: Acesso e Gerenciamento da Conta da ONG
História: Login da ONG
- Descrição: Autenticação via API externa
Este sistema não realiza o processo de login diretamente. A autenticação do usuário é delegada a uma API externa responsável por validar as credenciais e retornar as informações do usuário previamente registrado. Dessa forma, o sistema apenas consome o endpoint de autenticação, recebendo como resposta os dados do usuário autenticado, sem necessidade de gerenciar credenciais ou sessões internamente.
ÉPICO 2: Cadastro e Gerenciamento de Cursos
História: Cadastrar Novo Curso
- Descrição: Como ONG, quero cadastrar novos cursos com dados detalhados para oferecer oportunidades educativas à comunidade.
- Tarefas:
- Tela de cadastro com campos: nome, descrição, categoria, carga horária, certificado (sim/não), cronograma, número de vagas (Frontend)
- Seleção de professor responsável (Frontend)
- Seleção de local/ambiente (Frontend)
- Validação de períodos e horários (conflitos) (Frontend)
- Botão "Salvar curso" com feedback (Frontend)
- Criar model Curso com os campos necessários. (Backend)
- Criar model Curso com campos: nome, descrição, categoria, carga horária, certificado, cronograma, vagas (Backend)
- Criar model de vínculo entre Curso e Professor (Backend)
- Validar conflitos de horários no backend (Backend)
- Criar endpoint POST /cursos (restrito à ONG logada) (Backend)
- Implementar lógica de validação de curso e vinculação ao professor (Backend)
História: Visualizar Cursos Existentes
- Descrição: Como ONG, quero ver a lista de cursos ativos, futuros e encerrados para gerenciar o andamento de cada um.
- Tarefas:
- Tabela com filtros: por status, nome, professor (Frontend)
- Ícones de status (planejado, em andamento, concluído) (Frontend)
- Acesso ao detalhe do curso com opções de edição e cancelamento (Frontend)
- Endpoint GET /cursos?status=ativo (Backend)
- Adicionar filtros por status, nome, professor (Backend)
- Endpoint GET /cursos/:id para detalhes com opções de edição/cancelamento (Backend)
- Endpoint PATCH /cursos/:id (Backend)
ÉPICO 3: Cadastro e Gerenciamento de Professores
História: Cadastrar Professor
- Descrição: Como ONG, quero cadastrar um novo professor com seus dados para associá-lo a cursos conforme sua área.
- Tarefas:
- Tela com campos: nome completo, CPF, e-mail, telefone, área de atuação, experiência, disponibilidade, foto (opcional) (Frontend)
- Validação de dados e envio ao backend (Backend)
- Vinculação direta a cursos ativos (Backend)
- Criar model Professor com campos: nome, CPF, email, telefone, área, disponibilidade etc. (Backend)
- Endpoint POST /professores com validação (Backend)
- Relacionar professor com cursos (Backend)
História: Editar Dados de Professores
- Descrição: Como ONG, quero editar os dados de um professor para manter as informações sempre atualizadas.
- Tarefas:
- Botão de "Editar" nos detalhes do professor (Frontend)
- Atualização parcial dos dados (Frontend)
- Logs de atualização (opcional) (Backend)
- Endpoint PATCH /professores/:id (Backend)
- Lógica de logs de atualização (opcional) (Backend)
ÉPICO 4: Matrícula e Cadastro de Alunos
História: Cadastrar Aluno no Curso
- Descrição: Como ONG, quero registrar os alunos em cada curso para iniciar turmas completas.
- Tarefas:
- Formulário de matrícula com:
- Dados pessoais (nome, idade, CPF, RG, telefone) (Frontend)
- Dados escolares (escolaridade, instituição) (Frontend)
- Dados socioeconômicos: renda familiar, número de moradores, ocupação dos responsáveis, situação de moradia etc. (Frontend)
- Opção de upload de documentos (opcional) (Frontend)
- Feedback visual de sucesso/erro (Frontend)
- Criar model Aluno com todos os campos requeridos (pessoais, escolares, socioeconômicos) (Backend)
- Endpoint POST /alunos (Backend)
- Criar model Matricula para relacionar Aluno x Curso (Backend)
- Validar dados e gerar resposta clara (Backend)
- Formulário de matrícula com:
História: Visualizar Lista de Alunos
- Descrição: Como ONG, quero acessar a lista de alunos de cada curso para acompanhar presença e participação.
- Tarefas:
- Tabela com nome, status de matrícula, frequência, justificativas (Frontend)
- Filtro por turma (Frontend)
- Exportar lista em CSV ou PDF (Frontend)
- Endpoint GET /cursos/:id/alunos (Backend)
- Incluir frequência e status de matrícula (Backend)
- Endpoint GET /alunos/export?formato=csv (Backend)
ÉPICO 5: Acompanhamento e Relatórios
História: Acompanhar Execução dos Cursos
- Descrição: Como ONG, quero visualizar o andamento das aulas e relatórios dos professores para garantir que os cursos estão sendo ministrados.
- Tarefas:
- Tela com timeline do curso (datas das aulas) (Frontend)
- Exibição de relatórios por aula (texto + fotos) (Frontend)
- Indicador de aulas sem relatório ou sem frequência registrada (Frontend)
- Endpoint GET /cursos/:id/timeline (Backend)
- Endpoint GET /aulas/:id/relatorio (Backend)
- Indicar aulas sem frequência ou relatório (Backend)
História: Gerar Relatórios da ONG
- Descrição: Como ONG, quero exportar dados de cursos, alunos e professores para prestar contas a patrocinadores e órgãos públicos.
- Tarefas:
- Opções de filtro por período, curso e status (Frontend)
- Geração de relatórios CSV/PDF (Frontend)
- Layout com gráficos simples (turmas ativas, perfil dos alunos, etc.) (Frontend)
- Endpoint GET /relatorios?filtros (Backend)
- Exportação em CSV/PDF (Backend)
- Gerar dados agregados (perfil alunos, status de cursos, etc.) (Backend)
ÉPICO 6: Responsividade e UX para ONG
- Tarefas:
- Criar versão responsiva das telas de gerenciamento (Frontend)
- Testes de usabilidade em celular e tablet (Frontend)
- Adaptação de formulários longos (alunos) para melhor experiência mobile (Frontend)
ÉPICO 7: Permissões e Segurança
- Tarefas:
- Garantir que ONGs só visualizam seus próprios cursos e dados (Backend)
- Tokens de autenticação separados por perfil (Backend)
- Feedbacks claros ao tentar acessar recursos restritos (Backend)
- Middleware para garantir que ONG acesse apenas seus cursos, professores, alunos (Backend)
- Tokens com escopos distintos (ONG, professor, admin) (Backend)
- Lógica de fallback de erros: "acesso negado", "não autorizado" (Backend)
Visão Professor
ÉPICO 8: Autenticação e Acesso
História: Login de Usuário
- Descrição: Autenticação via API externa
Este sistema não realiza o processo de login diretamente. A autenticação do usuário é delegada a uma API externa responsável por validar as credenciais e retornar as informações do usuário previamente registrado. Dessa forma, o sistema apenas consome o endpoint de autenticação, recebendo como resposta os dados do usuário autenticado, sem necessidade de gerenciar credenciais ou sessões internamente.
ÉPICO 9: Visão Geral do Professor (Dashboard)
História: Visualizar Calendário de Aulas
- Descrição: Como professor, quero ver meu calendário de aulas da semana para me organizar e acessar rapidamente cada encontro.
- Tarefas:
- Criar componente de calendário (grid por semana) (Frontend)
- Inserir cards de aula por dia/horário (Frontend)
- Destacar aula atual (Frontend)
- Linkar cada card à tela de detalhes da aula (Frontend)
- Endpoint GET /professores/:id/calendario (Backend)
- Buscar aulas por período (Backend)
- Incluir status de cada aula (pendente, realizada, etc.) (Backend)
ÉPICO 10: Gestão de Aulas
História: Visualizar Detalhes da Aula
- Descrição: Como professor, quero acessar os detalhes de cada aula para planejar, registrar presença e descrever o encontro.
- Tarefas:
- Criar layout com tabs: [Resumo da Aula | Frequência | Relatório] (Frontend)
- Exibir nome do curso, horário, alunos matriculados (Frontend)
- Incluir botão de registrar frequência (Frontend)
- Campo para relatório e upload de imagens (Frontend)
- Endpoint GET /aulas/:id (Backend)
- Incluir tabs de dados: resumo, frequência, relatório (Backend)
- Endpoint POST /aulas/:id/relatorio (Backend)
- Suporte para upload de imagem (Backend)
ÉPICO 11: Frequência e Justificativas
História: Registrar Frequência dos Alunos
- Descrição: Como professor, quero marcar presença dos alunos para manter o controle da participação.
- Tarefas:
- Criar lista de alunos com checkbox de presença (Frontend)
- Indicar alunos com justificativa pendente (Frontend)
- Botão para submeter frequência (Frontend)
- Endpoint POST /aulas/:id/frequencia (Backend)
- Model FrequenciaAluno (Backend)
- Lógica de submissão com múltiplos alunos (Backend)
História: Visualizar e Incluir Justificativas
- Descrição: Como professor, quero ver justificativas de faltas e poder incluir observações para manter o registro atualizado.
- Tarefas:
- Exibir justificativas recebidas com opções (Aceitar/Rejeitar) (Frontend)
- Criar modal para nova justificativa (Frontend)
- Botão de salvar justificativa (Frontend)
- Endpoint GET /aulas/:id/justificativas (Backend)
- Endpoint POST /justificativas (Backend)
- Ações de aceitar/rejeitar: PATCH /justificativas/:id (Backend)
ÉPICO 12: Cursos e Turmas
História: Visualizar Cursos Ministrados
- Descrição: Como professor, quero acessar os cursos que estou ministrando para acompanhar a turma, os conteúdos e relatórios.
- Tarefas:
- Tela de listagem de cursos com filtros (nome, status) (Frontend)
- Botão para ver detalhes de cada curso (Frontend)
- Exibir alunos matriculados por curso (Frontend)
- Incluir acesso ao histórico de aulas do curso (Frontend)
- Endpoint GET /professores/:id/cursos (Backend)
- Incluir histórico de aulas por curso: GET /cursos/:id/aulas (Backend)
ÉPICO 13: Histórico de Aulas
História: Consultar Histórico de Aulas
- Descrição: Como professor, quero ver o histórico completo das aulas que ministrei para acompanhar o progresso da turma.
- Tarefas:
- Tela de listagem com data, curso e status da aula (Frontend)
- Acesso aos detalhes e relatórios arquivados (Frontend)
- Endpoint GET /professores/:id/aulas/historico (Backend)
- Incluir filtros por data/curso (Backend)
- Incluir link para relatórios arquivados (Backend)
ÉPICO 14: Lista de Alunos
História: Visualizar Lista de Alunos
- Descrição: Como professor, quero acessar a lista de alunos de cada curso para acompanhar presença e participação.
- Tarefas:
- Criar tabela com nome, contato e status de matrícula (Frontend)
- Adicionar filtros por turma (Frontend)
- Exportar lista em CSV ou PDF (Frontend)
- Endpoint GET /professores/:id/cursos/:cursoId/alunos (Backend)
- Incluir frequência e status de matrícula (Backend)
- Endpoint GET /alunos/export?formato=csv (Backend)
Mobile: Adaptação das Telas
- Tarefas específicas de responsividade e UX mobile:
- Adaptar calendário para rolagem lateral (Frontend)
- Redesenhar modais para telas pequenas (Frontend)
- Adicionar menu hamburguer com acesso às seções principais (Frontend)
- Backend deve expor os mesmos endpoints, com suporte a retorno simplificado se necessário via query param (ex: ?mobile=true) (Backend)