Skip to content

Sprint I (Discovery)

15/09/2025 à 22/09/2025

Planejamento de Interação

  • Objetivo da Sprint: Entender o problema, definir o escopo inicial e levantar os primeiros requisitos através da pesquisa com os usuários.

  • Presentes na reunião: |Nome| |----| |Bruno Norton| |Gabriel Pereira| |Iago Viana| |Pedro dos Santos|

Lista de Tarefas da Interação

Tarefa Responsabilidade
Definir o nome oficial do projeto e o problema a ser resolvido. Todos
Criar o repositório no GitHub e organizar a estrutura inicial da documentação. Gabriel
Realizar pesquisa e entrevistas com alunos e coordenadores. Bruno e Iago
Consolidar os resultados no Documento de Pesquisa. Gabriel
Elaborar a primeira versão do 5w2H com a visão geral do projeto. Bruno e Pedro
Conduzir a sessão de Brainstorming para elicitar os requisitos iniciais. Todos

Sprint Retrospective/Review Meeting

Dúvidas da Interação

  • Como vamos priorizar os requisitos levantados no Brainstorm?
  • Qual o nível de detalhe esperado no protótipo?

Riscos Encontrados

  • Dificuldade em agendar horários com os coordenadores para as entrevistas, o que poderia atrasar a fase de pesquisa.

Pontos Positivos

  • O time se alinhou rapidamente sobre a visão e o problema principal do projeto.
  • As entrevistas com os alunos foram muito ricas e trazem insights valiosos.

Pontos Negativos

  • O escopo inicial parecia muito amplo, gerando discussões sobre o que seria viável para o semestre.
  • A primeira reunião de brainstorm foi um pouco desorganizada.

O que podemos melhorar?

  • Focar em "fatiar" o escopo em entregas menores e mais gerenciáveis (MVP).
  • Utilizar um moderador com pauta definida para as próximas reuniões de ideação.

Ferramentas utilizadas

  • Reunião: Google Meet
  • Pesquisa: Google Forms
  • Colheita dos pontos: Mentimeter

Sprint II (Static Prototyping - HTML/CSS)

23/09/2025 à 30/09/2025

Planejamento de Interação

  • Objetivo da Sprint: Traduzir os requisitos e fluxos definidos em um protótipo estático (HTML/CSS), criando todas as telas necessárias para a navegação do aluno e do coordenador.

  • Presentes na reunião: |Nome| |----| |Bruno Norton| |Gabriel Pereira| |Iago Viana| |Pedro dos Santos|

Lista de Tarefas da Interação

Tarefa Responsabilidade
Desenvolver a estrutura base do style.css (variáveis, layout, header, sidebar). Gabriel
Criar as telas de fluxo de entrada: index.html, login_aluno.html, login_coord.html. Iago
Desenvolver as telas estáticas do painel do Aluno (aluno_vagas.html, aluno_candidaturas.html, aluno_perfil.html). Bruno
Desenvolver as telas estáticas do painel do Coordenador (coord_dashboard.html, coord_vagas.html). Pedro
Estilizar componentes reutilizáveis (modais, tabelas, cards) no style.css. Gabriel
Revisar e padronizar o HTML de todas as páginas. Todos

Sprint Retrospective/Review Meeting

Dúvidas da Interação

  • As classes CSS estão genéricas o suficiente para serem reutilizadas?
  • O layout do modal de "Criar Vaga" está muito complexo para uma única tela?

Riscos Encontrados

  • O style.css pode ficar muito grande e difícil de manter se não for bem organizado desde o início.

Pontos Positivos

  • A identidade visual (cores, fontes) foi implementada consistentemente em todas as telas.
  • A divisão das telas entre os membros funcionou bem, cobrindo todo o escopo visual do projeto.

Pontos Negativos

  • As páginas são apenas "cascas"; nenhum botão ou link funciona, o que dificulta a validação do fluxo.
  • Algumas inconsistências de nomenclatura de classes CSS foram encontradas durante o merge.

O que podemos melhorar?

  • Definir uma convenção de nomenclatura (como BEM) para o CSS na próxima fase.
  • Focar na interatividade (JavaScript) na próxima Sprint para "dar vida" ao protótipo.

Ferramentas utilizadas

  • Reunião: Google Meet
  • Desenvolvimento: Visual Studio Code (HTML/CSS)

Sprint III (Basic Interactivity - JS)

01/10/2025 à 08/10/2025

Planejamento de Interação

  • Objetivo da Sprint: Adicionar interatividade básica ao protótipo com JavaScript. Isso inclui simulação de login, navegação e a funcionalidade de modais simples e do formulário de perfil.

  • Presentes na reunião: |Nome| |----| |Bruno Norton| |Gabriel Pereira| |Iago Viana| |Pedro dos Santos|

Lista de Tarefas da Interação

Tarefa Responsabilidade
Criar o script.js e a função helper setupModal para abrir/fechar modais. Gabriel
Implementar a simulação de login (aluno e coordenador) com redirecionamento de página. Bruno
Conectar os modais de "Esqueci a Senha" e "Criar Conta" e simular o envio de formulário com alert(). Pedro
Implementar a lógica de "Editar Perfil" na página aluno_perfil.html (alternar disabled e texto do botão). Iago
Conectar o botão "Criar Nova Vaga" (coord_dashboard.html e coord_vagas.html) para abrir o modal. Gabriel
Simular a submissão do formulário "Criar Vaga" com alert() e fechar o modal. Bruno

Sprint Retrospective/Review Meeting

Dúvidas da Interação

  • A lógica de "Editar Perfil" está clara para o usuário (botão mudar de "Editar" para "Salvar")?
  • Estamos usando alert() demais? Quando devemos trocar por algo mais elegante?

Riscos Encontrados

  • O script.js pode crescer rapidamente e ficar desorganizado, misturando lógicas de páginas diferentes.

Pontos Positivos

  • O protótipo agora é navegável e interativo. Os fluxos de login e cadastro podem ser testados.
  • A função setupModal se provou muito útil e evitou repetição de código.
  • A funcionalidade de "Editar Perfil" (toggle) funciona muito bem.

Pontos Negativos

  • Os modais de "Ver Detalhes" (aluno) e "Gerenciar" (coordenador) ainda não funcionam e estão quebrando a experiência.
  • Todos os modais ainda contêm dados estáticos ou estão vazios.

O que podemos melhorar?

  • Separar a lógica no script.js por "página" ou "contexto" (ex:lógica do painel do aluno,lógica de login).
  • Focar na próxima Sprint em popular os modais complexos com dados dinâmicos.

Ferramentas utilizadas

  • Reunião: Google Meet
  • Desenvolvimento: Visual Studio Code (HTML/CSS, JavaScript)

Sprint IV (Dynamic Data Simulation - JS)

09/10/2025 à 16/10/2025

Planejamento de Interação

  • Objetivo da Sprint: Finalizar o protótipo funcional simulando um back-end. Isso envolve criar dados "mockados" e usá-los para popular dinamicamente os modais de "Detalhes da Vaga" e "Gerenciar Candidatos", implementando as ações principais.

  • Presentes na reunião: |Nome| |----| |Bruno Norton| |Gabriel Pereira| |Iago Viana| |Pedro dos Santos|

Lista de Tarefas da Interação

Tarefa Responsabilidade
Criar a estrutura dadosSimulados (vagas, candidatos) e o objeto Template no script.js. Gabriel
Implementar a função abrirModalDetalhesVaga para carregar dados de dadosSimulados.vagas. Bruno
Implementar a ação do botão "Quero me candidatar" (simulação com alert()). Bruno
Implementar a função abrirModalGerenciarCandidatos para carregar dados de dadosSimulados.candidatos e gerar a tabela. Pedro
Implementar as ações "Aprovar" e "Rejeitar" no modal de gerenciamento (simulação com alert() e remoção do item da tabela). Iago
Revisão final dos fluxos e interações do protótipo. Todos

Sprint Retrospective/Review Meeting

Dúvidas da Interação

  • Os dadosSimulados são suficientes para cobrir todos os casos de teste (ex: vaga sem candidatos)?
  • A remoção do item da tabela após aprovar/rejeitar é a melhor forma de dar feedback?

Riscos Encontrados

  • O protótipo está tão funcional que pode ser confundido com o produto final, gerando expectativas irreais sobre a rapidez do desenvolvimento "real" (com back-end).

Pontos Positivos

  • O protótipo está 100% funcional e simula o fluxo completo da aplicação.
  • A geração dinâmica de HTML pelos Templates funcionou perfeitamente e tornou o código limpo.
  • As interações de "Aprovar" e "Rejeitar" dão uma sensação muito realista de gerenciamento.

Pontos Negativos

  • A página de "Minhas Candidaturas" (aluno_candidaturas.html) ainda está com dados estáticos no HTML, não refletindo as ações do coordenador. (Nota: Isso foi identificado como uma melhoria para um próximo ciclo).

O que podemos melhorar?

  • Em um próximo ciclo, poderíamos fazer a aluno_candidaturas.html refletir os dados simulados, mas para o escopo do protótipo atual, o objetivo foi atingido.
  • O protótipo está pronto para ser usado em testes de usabilidade com usuários reais.

Ferramentas utilizadas

  • Reunião: Google Meet
  • Desenvolvimento: Visual Studio Code (JavaScript)

Sprint V (Migration to React & Componentization)

17/10/2025 à 05/11/2025

Planejamento de Interação

  • Objetivo da Sprint: Migrar o protótipo estático (HTML/CSS/JS) para uma aplicação React. O foco é componentizar a UI, introduzir roteamento (react-router-dom) e gerenciar o estado local com useState, recriando a funcionalidade do protótipo JS.

  • Presentes na reunião: |Nome| |----| |Bruno Norton| |Gabriel Pereira| |Iago Viana| |Pedro dos Santos|

Lista de Tarefas da Interação

Tarefa Responsabilidade
Configurar o ambiente do projeto React (ex: Vite) e instalar o react-router-dom. Gabriel
Criar o App.jsx e definir todas as rotas da aplicação (createBrowserRouter). Gabriel
Converter as páginas de login e seleção (index.html, login_*.html) em Pages React (IndexPage.jsx, LoginAlunoPage.jsx). Iago
Criar os AlunoLayout.jsx e CoordLayout.jsx usando e para navegação. Pedro
Converter as páginas internas do Aluno (aluno_*.html) em Pages filhas (AlunoVagasAbertas.jsx, AlunoCandidaturas.jsx, AlunoPerfil.jsx). Bruno
Converter as páginas internas do Coordenador (coord_*.html) em Pages filhas (CoordDashboard.jsx, CoordVagas.jsx). Pedro
Migrar os 'Templates' JS dos modais para Componentes React (VagaModal.jsx, CriarVagaModal.jsx, GerenciarCandidatosModal.jsx). Iago
Substituir a lógica imperativa do script.js (ex: toggle de perfil, abrir/fechar modal) por estado declarativo do React (useState). Todos
Mover os dadosSimulados para dentro dos componentes React (ex: DADOS_VAGAS em AlunoVagasAbertas.jsx). Bruno
Re-implementar as simulações de login e formulários com alert() e useNavigate. Todos

Sprint Retrospective/Review Meeting

Dúvidas da Interação

  • Como vamos gerenciar o estado global (ex: o usuário logado) no futuro? O React Context é o próximo passo?
  • O style.css (para o VagaModal) e o index.css (global) podem causar confusão. Devemos unificá-los?

Riscos Encontrados

  • A lógica de useState para múltiplos modais na mesma página (ex: LoginAlunoPage com Cadastro e Esqueci Senha) pode ficar complexa de gerenciar.
  • O "Prop drilling" (passar onClose para os modais) está simples agora, mas pode ser um problema se a aplicação crescer.

Pontos Positivos

  • A aplicação está 100% componentizada. O reuso de código (Modais, Layouts) é excelente.
  • O roteamento com react-router-dom é limpo e torna a navegação instantânea.
  • O uso de useState para controlar filtros, modais e formulários é muito mais declarativo e fácil de manter do que o JS puro.
  • A estrutura de pastas (pages, components) está bem organizada.

Pontos Negativos

  • A aplicação ainda depende de alert()s para simular ações de back-end.
  • Todos os dados (vagas, candidatos) ainda estão mocados dentro dos arquivos .jsx, não vêm de uma fonte externa.
  • Não há autenticação real ou rotas protegidas; qualquer um pode acessar /aluno/vagas diretamente pela URL.

O que podemos melhorar?

  • A próxima Sprint deve focar em substituir todos os alert()s e dados mocados por integrações de API reais.
  • Implementar um gerenciador de estado global (ex: Context API) para autenticação.
  • Criar Rotas Protegidas que verifiquem se o usuário está logado antes de renderizar os Layouts.

Ferramentas utilizadas

  • Reunião: Google Meet
  • Desenvolvimento: Visual Studio Code (React, JSX), Vite
  • Pacotes: react-router-dom

Sprint VI (API Integration & Local Data)

06/11/2025 à 12/11/2025

Planejamento de Interação

  • Objetivo da Sprint: Substituir todos os dados "mockados" (estáticos) da aplicação por dados reais. Iniciar com a integração de APIs externas (Heroku) e, em seguida, pivotar para um db.json local para estabilizar o ambiente de desenvolvimento.

  • Presentes na reunião: |Nome| |----| |Bruno Norton| |Gabriel Pereira| |Iago Viana| |Pedro dos Santos|

Lista de Tarefas da Interação

Tarefa Responsabilidade
Substituir os dados mocados (DADOS_VAGAS) pelo hook useEffect para buscar dados de APIs externas. Bruno
Integrar as 3 APIs (cursos, disciplinas, funcionarios) usando Promise.all. Gabriel
Implementar a lógica de mesclagem para atribuir um "Professor" (funcionarios) a cada "Disciplina", corrigindo o filtro para tipo_usuario_nome. Iago
Refatorar a busca de dados para usar um db.json local (armazenado na pasta /public). Bruno
Implementar a lógica flatMap para processar a estrutura aninhada do db.json (Vagas -> disciplinas) e popular as listas de vagas e cursos. Gabriel
Atualizar os componentes AlunoVagasAbertas e VagaModal para usar os novos nomes de propriedades (ex: nomeDisciplina, professorResponsavel). Pedro
Corrigir bugs de UI pós-integração (estilo do modal CSS e onClick do botão "Quero me candidatar"). Todos

Sprint Retrospective/Review Meeting

Dúvidas da Interação

  • A lógica flatMap para "achatar" o JSON aninhado está clara para todos os membros?
  • Como lidamos com dados que a API não fornece (ex: "Prazo"), mas a UI precisa? (Decisão: Manter estático no componente).

Riscos Encontrados

  • As APIs externas do Heroku estavam lentas ou "dormindo", tornando o desenvolvimento inicial instável.
  • A estrutura de dados das APIs externas era muito diferente da estrutura final do db.json, o que exigiu duas refatorações significativas na forma como os componentes liam as props.

Pontos Positivos

  • A aplicação agora é 100% orientada a dados, sem nenhum dado estático (exceto os placeholders deliberados no modal).
  • A mudança para o db.json local tornou o desenvolvimento instantâneo, estável e independente de internet.
  • A lógica de flatMap para processar o JSON aninhado é muito eficiente e limpa.
  • O filtro de vagas (por curso e por matéria) agora funciona com os dados reais.

Pontos Negativos

  • Gastamos tempo integrando 3 APIs externas que foram descartadas em favor do db.json. (Nota: Considerado um bom exercício de aprendizado).
  • Os botões "Quero me candidatar" e "Aprovar" ainda são simulações (alert()); eles não alteram o db.json.

O que podemos melhorar?

  • Definir uma "interface" (um contrato de dados) para o que o front-end espera, para evitar refatorações caso a API mude novamente.

Ferramentas utilizadas

  • Reunião: Google Meet
  • Desenvolvimento: Visual Studio Code (React, JSX)
  • API: fetch API, db.json (Arquivo estático)

Sprint VII (Multi-User Simulation & Professor Role)

13/11/2025 à 20/11/2025

Planejamento de Interação

  • Objetivo da Sprint: Expandir a plataforma para suportar múltiplos perfis de usuário (Aluno, Professor, Coordenador) com dados e permissões distintas. Criar o fluxo completo do Professor e implementar um sistema de login simulado que personaliza a experiência com base no usuário logado, utilizando dados dinâmicos do db.json.

  • Presentes na reunião: |Nome| |----| |Bruno Norton| |Gabriel Pereira| |Iago Viana| |Pedro dos Santos|

Lista de Tarefas da Interação

Tarefa Responsabilidade
Expandir o db.json para incluir dados detalhados de candidatos dentro das disciplinas e adicionar campos de email para todos os usuários. Gabriel
Criar o AuthContext.jsx para gerenciar o estado global de autenticação (Login/Logout) e persistir o usuário no localStorage. Bruno
Implementar as novas páginas e rotas do Professor: LoginProfessorPage, ProfessorLayout, ProfessorCandidatos e ProfessorAlterarVaga. Iago
Refatorar as páginas de Login (Aluno, Professor, Coordenador) para validar as credenciais (Nome ou Email) contra o db.json e atualizar o contexto global. Pedro
Atualizar as páginas do Aluno (Candidaturas, Perfil) para exibir dados dinâmicos baseados no aluno logado (ex: "Bruno Norton" vs "Ana Souza"). Bruno
Refatorar o painel do Coordenador (CoordDashboard, CoordVagas) para filtrar cursos pelo coordenador logado e transformar a gestão de vagas em visualização (somente leitura). Gabriel
Implementar a lógica de abas interativas no Dashboard do Coordenador para detalhar as estatísticas (Vagas, Candidatos, Professores). Todos

Sprint Retrospective/Review Meeting

Dúvidas da Interação

  • Como lidar com usuários que têm o mesmo nome? (Decisão: Por enquanto, o sistema busca pela primeira ocorrência, mas o campo email foi adicionado para futura validação única).
  • O AuthContext é suficiente para "proteger" rotas? (Sim, para o escopo de simulação, ele cumpre o papel de persistir a sessão).

Riscos Encontrados

  • A complexidade do db.json aumentou significativamente com o aninhamento de dados (Vagas -> Disciplinas -> Candidatos), o que exigiu cuidado extra na manipulação dos arrays (flatMap).
  • A refatoração simultânea de múltiplas páginas para usar o useAuth() gerou alguns bugs temporários de "variável não definida", rapidamente corrigidos.

Pontos Positivos

  • A simulação de múltiplos usuários ficou excelente. É possível testar cenários reais trocando de login (ex: ver as vagas do Dr. Carlos vs Dra. Maria).
  • A interface do Professor ficou intuitiva e consistente com o resto da plataforma.
  • O uso do AuthContext limpou muito o código, removendo as constantes de "usuário hardcoded" espalhadas pelos arquivos.
  • A transformação do Dashboard do Coordenador em abas interativas melhorou muito a usabilidade.

Pontos Negativos

  • A validação de login ainda é uma simulação "client-side" que lê todo o banco de dados, o que não seria seguro em produção, mas funciona perfeitamente para o protótipo.

O que podemos melhorar?

  • Adicionar feedback visual de erro nos formulários de login (ex: borda vermelha no input) em vez de apenas alert().

Ferramentas utilizadas

  • Reunião: Google Meet
  • Desenvolvimento: Visual Studio Code (React, JSX)
  • Gestão de Estado: React Context API (useContext)