Contexto
A Conexão Treinamento é uma academia administrada por Jorge Souza da Cruz e Giovanni Frozza da Cruz, que atualmente opera seus processos internos de forma manual. Agendamentos de alunos, registro de treinos, controle de evolução física e organização da agenda dos professores são feitos em planilhas em papel, o que gera retrabalho, inconsistências e falta de dados centralizados para tomada de decisão.
Diante desse cenário, surgiu a necessidade de criar um sistema interno capaz de automatizar as tarefas administrativas e operacionais, além de oferecer métricas confiáveis sobre o desempenho dos alunos e da equipe. Com isso, espera-se reduzir falhas de comunicação, otimizar o tempo dos professores e proporcionar uma experiência mais organizada e profissional aos alunos.
O projeto consiste no desenvolvimento de uma aplicação web adaptativa, voltada para professores e administradores. Por meio dela, será possível gerenciar cadastros, turmas, agendas e acompanhar a evolução dos alunos de forma centralizada e acessível.
User Stories
[US01] - Administradores
Como administrador do sistema
Quero visualizar, cadastrar e consultar outros administradores
Para gerenciar o acesso administrativo e manter o controle da equipe que administra o sistema.
Requisitos Funcionais — Módulo de Administradores
Listagem de Administradores
- O sistema deve exibir a lista de todos os administradores cadastrados.
- Para cada administrador devem ser exibidos:
- Nome completo
- Inicial do nome no avatar
- Data de criação da conta
Busca de Administradores
- O usuário pode buscar administradores pelo nome ou e-mail.
- A busca deve filtrar a lista em tempo real.
Visualizar Perfil de Administrador
- Ao selecionar um administrador, o sistema deve exibir seus dados detalhados:
- Nome
- Status/role (Administrador)
- Data de criação
- O administrador logado não pode editar esses dados nesta tela (edição é feita via módulo Perfil).
Criar Novo Administrador
- O sistema deve permitir criar um novo administrador.
- Campos obrigatórios:
- Nome
- Sobrenome
- Senha
- Confirmação de senha
- Ações disponíveis:
- “Salvar”
- “Cancelar”
Validações ao Criar Administrador
- O sistema deve validar:
- Que o e-mail não está em uso
- Que a senha e a confirmação de senha são iguais
- Que todos os campos obrigatórios foram preenchidos
- Em caso de erro, deve exibir feedback visual (ex.: mensagem de erro).
Restrições do Administrador Logado
- O administrador logado não pode:
- Editar seus próprios dados nesta US
- Remover-se do sistema
- Essas ações pertencem à US Perfil.
[US02] - Login
Como administrador da Conexão Treinamento
Quero informar meu e-mail e senha
Para acessar o sistema e utilizar suas funcionalidades internas.
Requisitos Funcionais — Módulo de Login
Formulário de Autenticação
- O sistema deve disponibilizar um formulário com:
- Campo de e-mail
- Campo de senha
- Botão “Entrar”
Validação de Credenciais
- Ao clicar em “Entrar”, o sistema deve:
- Enviar as credenciais ao backend para validação.
- Exibir mensagem de erro caso o e-mail ou a senha estejam incorretos.
- Bloquear o login caso o usuário esteja inativo (incluindo trainers e administradores).
Geração de Sessão
- Após validação bem-sucedida:
- O backend deve gerar um token de autenticação.
- O token deve ser armazenado localmente no navegador.
- A role do usuário também deve ser armazenada.
Redirecionamento Após Login
- Após login bem-sucedido:
- O usuário deve ser redirecionado para a página Agenda.
Validação Contínua da Sessão
- O sistema deve verificar continuamente:
- Se não houver token, o usuário deve ser redirecionado para a página de login.
- Se o token estiver expirado, o sistema deve:
- Limpar o token armazenado
- Limpar a role
- Redirecionar automaticamente para a página de login
- Tentativas de acessar páginas internas sem token devem sempre redirecionar para o login.
Logout (Logoff)
- Ao realizar logoff, o sistema deve:
- Remover o token de autenticação armazenado
- Remover a role armazenada
- Redirecionar o usuário para a página de login
Fora do Escopo
- Recuperação de senha
[US03] - Professores
Como administrador da Conexão Treinamento
Quero gerenciar os professores da academia
Para manter controle sobre suas informações pessoais, profissionais e perfis de atuação.
Requisitos Funcionais — Módulo de Professores
Listagem de Professores
- O sistema deve exibir todos os professores cadastrados.
- Para cada professor devem ser mostrados:
- Nome completo
- Status (Ativo / Inativo)
- Telefone
- Especialidades cadastradas (com lista múltipla)
- Tipo de compensação (Horista / Mensalista)
- Data de criação
- Professores inativos devem aparecer com status destacado.
Busca e Filtros
- A busca deve permitir filtrar professores por:
- Nome
- Telefone
- O menu lateral de filtros deve permitir filtrar por:
- Status (Ativo, Inativo)
- Tipo de compensação (Horista / Mensalista / Todos)
- Especialidade específica
Cadastrar Novo Professor
- Ao clicar em “Novo professor”, deve abrir um formulário contendo:
- Nome completo
- Data de nascimento
- Endereço
- Telefone
- Tipo de compensação (Horista ou Mensalista)
- Campo para adicionar especialidades (múltiplas)
- Senha de acesso inicial
- Ações disponíveis:
- “Cadastrar Professor”
- “Cancelar”
Validações necessárias:
- Todos os campos obrigatórios devem ser preenchidos.
- O e-mail não pode estar já cadastrado.
- A senha deve atender às regras do sistema.
- A especialidade selecionada deve ser adicionada à lista antes de salvar.
Editar Professor
- Deve ser possível editar qualquer professor existente.
- Campos editáveis:
- Nome completo
- Data de nascimento
- Endereço
- Telefone
- Tipo de compensação
- Adicionar e remover especialidades
- Nova senha (opcional; campo vazio mantém a senha atual)
- Ações:
- “Salvar Alterações”
- “Cancelar”
Excluir Professor
- Deve ser possível excluir um professor pelo botão “Excluir”.
- A exclusão deve exigir confirmação antes de finalizar.
- Professores excluídos devem ser removidos da listagem.
Status de Ativação
- Um professor pode ser marcado como Ativo ou Inativo.
- Professores inativos:
- Não podem acessar o sistema (impede login).
- Continuam visíveis na listagem.
- Podem ser reativados via edição.
[US04] - Exercícios
Como administrador ou professor
Quero gerenciar os exercícios cadastrados no sistema
Para manter uma biblioteca organizada para uso nas fichas de treino e registros de aula.
Requisitos Funcionais — Módulo de Exercícios
Listagem de Exercícios
- O sistema deve exibir todos os exercícios cadastrados.
- Para cada exercício devem aparecer:
- Nome do exercício
- Status (Ativo)
- Descrição (ou indicação “Sem descrição”)
- Ações disponíveis: Editar e Excluir
Busca de Exercícios
- Deve ser possível buscar exercícios por nome através do campo de busca.
- O resultado deve ser filtrado em tempo real conforme o texto digitado.
Filtros de Exercícios
- O painel lateral de filtros deve permitir:
- Filtrar exercícios por status (Ativos / Inativos — caso exista no futuro)
- Filtrar exercícios por categoria (se aplicável)
- A lista deve ser atualizada de acordo com o filtro selecionado.
Cadastrar Novo Exercício
- Ao clicar em “Novo Exercício”, deve abrir um modal contendo:
- Campo “Nome do Exercício”
- Campo “Descrição”
- Ações disponíveis:
- “Criar Exercício”
- “Cancelar”
Validações necessárias:
- O nome do exercício não pode ser vazio.
- Exercícios com nomes duplicados devem ser bloqueados ou exigirem confirmação.
Editar Exercício
- No botão “Editar”, deve ser possível alterar:
- Nome do exercício
- Descrição
- Ações:
- “Salvar alterações”
- “Cancelar”
Excluir Exercício
- O sistema deve permitir excluir um exercício.
- A exclusão deve:
- Exigir confirmação do usuário
- Remover o exercício da biblioteca
- Caso o exercício esteja vinculado a algum treino registrado no histórico:
- O sistema deve impedir a exclusão ou solicitar confirmação especial (dependendo da regra de negócio definida).
Visualizar Detalhes do Exercício
- Ao selecionar um exercício, deve ser possível visualizar:
- Nome
- Descrição
- Data de criação
- Um modal de visualização deve ser exibido com a opção “Fechar”.
Fora do Escopo
- Registro de exercícios em aulas (pertence à US Agenda).
- Classificação avançada por categorias, grupos musculares etc.
[US05] - Alunos
Como administrador ou professor da Conexão Treinamento\
Quero cadastrar, visualizar e gerenciar alunos
Para manter informações atualizadas e acompanhar sua evolução, planos e participação nas aulas.
Requisitos Funcionais — Módulo de Alunos
Listagem de Alunos
- O sistema deve exibir todos os alunos cadastrados, incluindo:
- Nome completo
- Email e telefone
- Profissão e sexo
- Status (Ativo / Inativo)
- Plano atual e validade
- Cada aluno deve possuir ações rápidas:
- Avaliação
- Editar
- Excluir
Busca e Filtros
Busca por texto
- O usuário deve poder buscar alunos por:
- Nome
- Telefone
- Professor vinculado
Filtros avançados
- Deve existir um modal de filtros permitindo filtrar por:
- Status (Ativo / Inativo)
- Professor
- Plano
- Sexo
Cadastro de Novo Aluno
- O sistema deve disponibilizar um formulário dividido em seções:
Informações pessoais
- Nome, sobrenome
- Telefone
- Sexo
- Data de nascimento
- Profissão
Endereço
- Rua, número, bairro, complemento, CEP
Contato de emergência
- Nome, telefone, parentesco
Plano
- Seleção de plano existente ou “Sem plano”
Objetivos
- Campo de texto livre
Observações
- Campo de texto livre
Ficha de Anamnese (opcional)
- Deve expandir apenas quando marcado
- Deve conter perguntas sobre:
- Medicações
- Problemas cardíacos, respiratórios, ortopédicos
- Lesões, cirurgias, diabetes, hipertensão, colesterol
- Restrições para atividade física
- Histórico médico geral
Comprometimentos físicos
- Seleção de tipo (Visual, Motor, Auditivo, Intelectual, Outro)
- Nome e observações
- Botão Adicionar
Edição do Aluno
- Deve ser possível editar qualquer informação cadastrada, incluindo:
- Dados pessoais
- Endereço
- Plano
- Anamnese
- Comprometimentos físicos
Exclusão de Aluno
- O sistema deve:
- Mostrar um modal de confirmação antes da exclusão
- Remover o aluno permanentemente caso confirmado
Perfil do Aluno (Visualização Completa)
- Deve exibir todas as informações organizadas em abas:
Geral
- Cronograma semanal
- Aulas recentes com status de presença
Anotações
- Observações livres do professor/administrador
Exercícios
- Histórico de exercícios realizados em aulas
Detalhes
- Informações pessoais, endereço, emergência
- Ficha de anamnese completa
Planos
- Histórico de planos
- Situação atual
- Botão Renovar plano
Avaliações Físicas
- O sistema deve permitir criar avaliações físicas com campos para:
Dados básicos
- Peso, altura, IMC (calculado automaticamente)
Circunferências
- Braços, coxas, cintura, abdômen, panturrilhas etc.
Dobras cutâneas
- Tríceps, subescapular, peitoral, abdominal, suprailíaca etc.
Diâmetros
- Bílea e joelho
- Deve haver botões:
- Salvar avaliação
- Cancelar
Cronograma de Aulas do Aluno
- O sistema deve listar aulas disponíveis por dia da semana
- Deve respeitar o limite semanal definido pelo plano
- Deve permitir:
- Selecionar ou desmarcar aulas
- Exibir quantidade de aulas já selecionadas
- Filtrar por professor
- Salvar alterações
Validações
- Os seguintes campos devem ser obrigatórios:
- Nome
- Telefone
- Sexo
- Campos essenciais do cadastro
- Campos médicos devem ser opcionais
- O sistema deve exibir mensagens de erro claras em caso de inconsistência
[US06] - Infraestrutura da aplicação
Requisitos Funcionais — Módulo de Infraestrutura e Deploy
Migração e Organização do Código
- O desenvolvimento do projeto se dá no github porém código do projeto deve ser migrado do repositório principal (branch
main) para um repositório no GitLab, - O repositório GitLab deve ser configurado como fonte oficial de versionamento (não permitir commits diretos em
main, apenas via Merge Request).
Pipeline de CI/CD no GitLab
- Deve existir um pipeline de CI/CD configurado no GitLab, acionado em:
- Merge Requests (para rodar testes)
-
Commits na branch
main(para deploy).
Testes Automatizados em Merge Request
- Ao abrir ou atualizar um Merge Request:
- O pipeline deve executar os testes automatizados do backend (módulo Spring Boot).
- O pipeline deve executar os testes do frontend (Next.js).
- O Merge Request não deve poder ser aprovado se algum estágio de teste falhar.
Build e Deploy do Backend (AWS)
- Em commits aprovados na
main:- O pipeline deve gerar uma imagem Docker do backend (
backend/Dockerfile). - A imagem deve ser enviada para um registro de imagens compatível com o AWS App Runner.
- O AWS App Runner deve ser atualizado para utilizar a nova imagem.
- O pipeline deve gerar uma imagem Docker do backend (
- A aplicação backend deve se comunicar com:
- Amazon RDS (PostgreSQL) como banco de dados.
- AWS Secrets Manager para obter credenciais e strings de conexão, sem expor segredos no código ou no repositório.
Build e Deploy do Frontend (Vercel)
- Em commits aprovados na
main:- O pipeline deve disparar o processo de build do frontend (
web/). - A aplicação Next.js deve ser implantada na Vercel, utilizando as variáveis de ambiente adequadas (URL da API, etc.).
- O pipeline deve disparar o processo de build do frontend (
- Após o deploy bem-sucedido:
- A Vercel deve servir a aplicação ao usuário final, que se comunica com o backend hospedado no AWS App Runner.
Gestão de Configurações e Segredos
- Variáveis sensíveis (tokens, credenciais de banco, chaves JWT, etc.) não devem ser commitadas no repositório.
[US07] - Página de Perfil
Como usuário autenticado (administrador ou professor)
Quero visualizar e atualizar minhas próprias informações pessoais e de segurança
Para manter meus dados corretos e garantir a segurança da minha conta.
Requisitos Funcionais — Módulo de Perfil
Visualização do Perfil
- O sistema deve exibir os dados do usuário logado.
- Devem ser apresentados:
- Nome completo
- Avatar com iniciais
- Role do usuário (Administrador ou Professor)
- Data de criação da conta
- Para professores, também:
- Telefone
- Endereço
- Data de nascimento
Edição de Informações Pessoais
- O usuário deve poder editar seus próprios dados pessoais.
- Campos editáveis:
- Administrador:
- Nome completo
- Professor:
- Nome completo
- Telefone
- Endereço
- Data de nascimento
- Administrador:
- O e-mail é exibido, mas não pode ser alterado pelo usuário.
- Ações disponíveis:
- Botão “Salvar alterações”
- Botão “Cancelar”
Validações de Dados
- O sistema deve validar:
- Campos obrigatórios preenchidos (ex.: nome).
- Formato de e-mail válido (mesmo que não seja editável).
- Formato de telefone quando informado.
- Data de nascimento válida.
- Em caso de erro, deve exibir mensagens de feedback.
Alteração de Senha (Aba Segurança)
- O usuário deve poder alterar a própria senha.
- Devem existir os campos:
- Senha atual
- Nova senha
- Confirmação da nova senha
- Regras:
- A senha atual deve corresponder à senha cadastrada.
- Nova senha e confirmação devem ser idênticas.
- A nova senha deve obedecer à política mínima definida pelo sistema.
- Ações disponíveis:
- Botão “Alterar senha”
- Em caso de sucesso ou erro, o sistema deve exibir mensagem de feedback.
Restrições de Permissão
- O usuário não pode:
- Editar dados de outros usuários.
- Alterar a própria role (Administrador/Professor).
- A página de perfil sempre trabalha apenas com o usuário autenticado.
Acesso à Página de Perfil
- Somente usuários autenticados podem acessar a página de perfil.
[US08] - Agenda (Eventos + Turmas)
Como professor ou administrador da Conexão Treinamento
Quero visualizar, criar e gerenciar as aulas do dia
Para organizar horários, registrar alunos e acompanhar a execução dos treinos de forma centralizada.
Requisitos Funcionais — Módulo de Agenda
Visualização da Agenda
- O sistema deve exibir uma visualização mensal dos dias, permitindo selecionar datas.
- Deve incluir:
- Lista de dias do mês com destaque para o dia selecionado
- Indicação do dia da semana
- Botão “Hoje” para retornar à data atual
Visualização das Aulas do Dia
- Ao selecionar uma data, o sistema deve exibir todas as aulas cadastradas para aquele dia.
- Para cada aula, devem ser exibidos:
- Nome da aula
- Horário (início e fim)
- Nome do professor
- Quantidade de alunos inscritos
- Botão “Adicionar alunos”
Filtro por Professor
- O usuário deve poder filtrar aulas exibidas por professor.
- Deve incluir:
- Dropdown com lista de professores
- Campo de busca
- Opção “Todos os professores”
Criar Nova Aula
- O sistema deve permitir criar uma nova aula na data selecionada.
- Campos obrigatórios:
- Nome da aula
- Professor
- Horário de início
- Horário de fim
- Ações disponíveis:
- “Criar Aula”
- “Cancelar”
Editar Aula Existente
- Deve ser possível editar uma aula na tela de detalhes.
- Alterações permitidas:
- Nome
- Professor
- Horário
- Observações
Cancelar Aula
- O sistema deve permitir cancelar uma aula.
- Consequências:
- Aula removida da agenda
- Alunos perdem o vínculo com a aula cancelada
Adicionar Aluno à Aula
- Deve ser possível adicionar alunos via modal.
- O modal deve exibir:
- Campo de busca
- Lista paginada de alunos
- Botão individual “Adicionar”
Exibir Alunos da Aula
- A tela da aula deve listar todos os alunos inscritos.
- Para cada aluno:
- Nome
- Status de presença
- Botão “Presença”
- Botão “Remover”
Registrar Exercício Realizado
- Ao registrar um exercício, deve abrir um modal com:
- Seletor de exercício
- Botão “Criar novo exercício”
- Séries
- Repetições
- Carga
- Observações
- Ações:
- “Registrar”
- “Cancelar”
Criar Novo Exercício
- Permitir criar exercícios inexistentes diretamente no fluxo.
- Campos:
- Nome
- Descrição
- Ações:
- “Criar e usar”
- “Cancelar”
Marcar Presença
- Deve ser possível marcar presença do aluno na aula.
- Estados possíveis:
- “Presente”
- Ausente (implícito)
Paginação de Alunos
- O modal de adicionar alunos deve possuir controle de paginação.
[US09] - Débitos Técnicos e [US11] - Melhorias de usabilidade
Durante o ciclo de desenvolvimento, diversas melhorias técnicas foram identificadas pelos stakeholders, seja no momento de desenvolvimento, code review, teste ou homologação com cliente. Essas melhorias foram avaliadas e registradas na plataforma GitHub Projects através de cards marcados com a convenção “[Fix]”, usada para classificar tarefas de manutenção e débitos técnicos.
Essas melhorias não ocorreram todas na mesma sprint, mas foram agrupadas aqui por estarem relacionadas ao mesmo objetivo técnico.
Débitos Técnicos
Otimização e Estruturação do Backend
- Revisar e padronizar as rotas da API para maior consistência e aderência ao REST.
- Realizar ajustes no banco de dados, incluindo:
- Correções de estrutura
- Alinhamento dos tipos de dados
- Ajustes de relacionamento e constraints
- Reorganizar as pastas da API para melhorar a modularidade e escalabilidade.
- Revisar e padronizar o formato das requisições, garantindo compatibilidade com o frontend.
- Ajustar o comportamento do campo de duração, corrigindo problemas de validação e edge cases.
- Corrigir comportamento da lista de exercícios sugeridos.
- Revisar o comportamento da tela de novo exercício em dispositivos móveis.
Melhorias de Testes Automatizados
- Reestruturar a arquitetura de testes para refletir corretamente os módulos internos.
- Ajustar testes de administrador que apresentavam inconsistências.
- Garantir que os testes sejam executados automaticamente na pipeline.
Correções Relacionadas ao Fluxo de Login e Roles
- Bloquear login de treinadores inativos.
- Corrigir lógica do login e tratamento de erros.
- Associar administrador a usuário corretamente.
- Ajustar regras de roles no banco de dados.
Correções Gerais de Estabilidade
- Padronizar comportamento de respostas e validações.
- Ajustar problemas gerais detectados pelo lint do frontend.
- Corrigir comportamentos inconsistentes no cadastro de aluno.
- Rever o comportamento da criação de plano, aluno e professor.
- Ajustar visibilidade de tags e comportamento visual de elementos.
Melhorias de Usabilidade
Padronização de Formulários e Modais
- Padronizar todos os formulários do sistema (inputs, espaçamentos, labels, feedbacks).
- Corrigir campos que ultrapassavam margens internas de modais.
- Ajustar modais de criação de professor e administrador para manter consistência visual.
- Adicionar feedback de confirmações ao excluir exercícios ou tirar presença.
Melhorias de Navegação e Interação
- Ajustar a tela de Agenda para melhorar visualização e usabilidade dos horários.
- Remover checkbox geral na seleção de aulas do aluno, evitando seleção acidental.
- Adicionar o nome do professor nos cards de aula para facilitar entendimento.
- Adicionar ícone de "olho" nos campos de senha para melhorar acessibilidade.
Melhorias de Feedback ao Usuário
- Melhorar mensagens de erro em formulários e fluxos críticos.
- Mostrar corretamente a foto ou iniciais do usuário nas telas de perfil.
- Ajustar comportamento de campos com feedback imediato ou dinâmico.
Ajustes Específicos de Telas
- Revisar e corrigir comportamento da tela de Avaliação Física.
- Ajustar exibição e edição do Perfil do Professor.
- Ajustar o modal de criação de novo administrador.
- Garantir correta exibição das tags e status dos elementos visuais.
- Corrigir eventuais erros na tela de cadastro de plano.
Diretrizes de Usabilidade
- Seguir o design system adotado (shadcn/ui).
- Manter consistência visual entre páginas diferentes.
- Garantir que ações críticas exijam confirmação.
- Evitar ações ambíguas ou campos confusos.
- Oferecer feedback claro para erros e sucessos.
[US10] - Página de Planos
Como administrador ou professor da Conexão Treinamento
Quero visualizar, criar, excluir e restaurar planos de assinatura
Para organizar as modalidades e opções de contratação disponíveis para os alunos.
Requisitos Funcionais — Módulo de Planos
Listagem de Planos
- O sistema deve exibir todos os planos ativos.
- Para cada plano devem ser exibidos:
- Nome do plano
- Quantidade de dias por semana permitida
- Duração total em dias
- Descrição (quando fornecida)
- Status (ativo ou excluído)
Criar Novo Plano
- O sistema deve permitir a criação de um novo plano por meio de um modal.
- Campos obrigatórios:
- Nome do plano
- Dias por semana
- Duração em dias
- Campo opcional:
- Descrição
- Ações disponíveis:
- “Salvar"
- “Cancelar”
- Após salvar, o novo plano deve aparecer imediatamente na lista.
Validações ao Criar Plano
- O sistema deve validar que:
- O nome do plano não está vazio.
- A duração é maior que zero.
- A quantidade de dias por semana é maior que zero.
- Caso tente criar um plano com o mesmo nome de um plano existente ativo, o sistema deve bloquear e exibir mensagem de erro.
Excluir Plano
- O sistema deve permitir excluir planos ativos.
- Planos excluídos:
- Não devem aparecer na criação ou edição de alunos.
- Devem ser exibidos com o botão “Restaurar”.
Restaurar Plano Excluído
- O sistema deve permitir restaurar um plano previamente excluído.
- Após restaurado:
- Volta a ser elegível na criação/edição de alunos.
Filtros
- Deve existir um botão de filtros na listagem.
- O filtro deve alterar a listagem em tempo real.
Fora do Escopo
- Controle de preço dos planos.
Estrutura Analítica de Projeto
A Estrutura Analítica do Projeto (EAP) ou Work Breakdown Structure (WBS) é uma representação visual que decompõe todo o escopo do projeto em partes menores, organizadas e fáceis de entender. Seu objetivo é mostrar tudo o que precisa ser entregue, em um formato hierárquico que vai do mais geral (o projeto) até o mais detalhado (subentregas e pacotes de trabalho).
Nesta wiki apresentamos uma versão resumida da EAP, destacando apenas os grupos de entregas principais.
A versão completa, com todas as subtarefas, pode ser consultada no miro.
