- Visão Geral
- Objetivo do Sistema
- Tecnologias Utilizadas
- Arquitetura
- Sistema de Autenticação e Autorização
- Perfis de Usuário
- Funcionalidades por Perfil
- Regras de Negócio
- Estrutura de Dados
- Fluxos Principais
O UNIENF é um sistema de gestão acadêmica desenvolvido para uma instituição de ensino superior focada em cursos de enfermagem (Técnico em Enfermagem, Auxiliar de Enfermagem e Especialização em Urgência). O sistema permite a gestão completa do ciclo acadêmico, desde o cadastro de alunos até o controle financeiro e emissão de documentos.
O sistema UNIENF foi desenvolvido para:
- Centralizar a gestão acadêmica de uma instituição de ensino de enfermagem
- Facilitar o acompanhamento do desempenho acadêmico dos alunos
- Automatizar processos de controle financeiro (mensalidades)
- Gerenciar documentação acadêmica de forma digital
- Melhorar a comunicação entre instituição, professores e alunos através de avisos
- Otimizar operações administrativas e de recepção
- Fornecer dashboards e métricas para tomada de decisão
- Next.js 16 - Framework React com App Router
- React 19 - Biblioteca de interface
- TypeScript - Tipagem estática
- Tailwind CSS 4 - Estilização
- Radix UI - Componentes acessíveis (Dialog, Select, Dropdown, etc.)
- Shadcn/ui - Componentes de UI
- React Hook Form - Gerenciamento de formulários
- Zod - Validação de schemas
- Lucide React - Ícones
- Supabase - Backend as a Service (BaaS)
- Autenticação (Auth)
- Banco de dados PostgreSQL
- Row Level Security (RLS)
- Next.js Server Actions - Server-side actions
- ESLint - Linting
- Prettier - Formatação de código
- Lint-staged - Git hooks
O projeto segue a arquitetura do Next.js App Router:
app/
├── (app)/ # Rotas protegidas (requerem autenticação)
│ ├── admin/ # Área administrativa
│ ├── aluno/ # Área do aluno
│ ├── professores/ # Área do professor
│ └── recepcao/ # Área de recepção
├── _components/ # Componentes reutilizáveis
├── _lib/ # Utilitários e actions
│ ├── actions/ # Server Actions
│ ├── supabase/ # Clientes Supabase
│ └── mockdata/ # Dados mock (desenvolvimento)
├── login/ # Página de login
├── signup/ # Página de cadastro
└── page.tsx # Página inicial (pública)
O sistema utiliza Supabase Auth para autenticação:
-
Registro de Usuários:
- Formulário de cadastro em
/signup - Validação de senha (mínimo 6 caracteres, 1 maiúscula, 1 número)
- Criação de conta com email e senha
- Verificação de email obrigatória
- Formulário de cadastro em
-
Login:
- Formulário em
/login - Validação de credenciais via Supabase
- Redirecionamento automático baseado no perfil do usuário
- Formulário em
-
Middleware de Proteção:
- Verifica autenticação em todas as rotas protegidas
- Redireciona usuários não autenticados para
/login - Rotas públicas:
/,/login,/signup,/auth,/verify-email
O sistema implementa um modelo de Role-Based Access Control (RBAC) com os seguintes perfis:
- Aluno (
aluno) - Professor (
professor) - Recepção (
recepção) - Administrativo (
administrativo) - Coordenação (
coordenação)
Cada perfil possui permissões específicas e acessa apenas as funcionalidades permitidas.
Permissões:
- Visualizar próprio perfil e dados acadêmicos
- Acessar documentos próprios (somente leitura)
- Visualizar notas
- Consultar situação financeira (mensalidades)
- Visualizar avisos direcionados
Área de Acesso: /aluno
Menu de Navegação:
- Visão Geral (Dashboard)
- Meus Documentos
- Minhas Notas
- Financeiro
- Avisos
Permissões:
- Gerenciar turmas próprias
- Criar e editar turmas
- Lançar notas dos alunos
- Criar avisos para turmas ou alunos específicos
- Visualizar avisos da coordenação/administração
Área de Acesso: /professores
Menu de Navegação:
- Visão Geral (Dashboard)
- Minhas Turmas
- Lançar Notas
- Avisos
Permissões:
- Cadastrar novos alunos
- Editar perfis de alunos
- Gerenciar documentos de alunos (marcar como entregue, adicionar observações)
- Registrar pagamentos de mensalidades
- Visualizar avisos (somente leitura)
Área de Acesso: /recepcao
Menu de Navegação:
- Visão Geral (Dashboard)
- Documentos
- Financeiro
- Avisos
Permissões:
- Acesso completo ao sistema
- Gerenciar todos os alunos
- Gerenciar professores
- Gerenciar turmas
- Gerenciar cursos
- Acesso completo ao financeiro
- Criar avisos gerais ou específicos
Área de Acesso: /admin
Menu de Navegação:
- Visão Geral (Dashboard)
- Alunos
- Professores
- Turmas
- Cursos
- Financeiro
- Avisos
Permissões:
- Mesmas permissões do perfil Administrativo
- Foco em gestão acadêmica e pedagógica
Área de Acesso: /admin
Menu de Navegação:
- Visão Geral (Dashboard)
- Alunos
- Professores
- Turmas
- Cursos
- Financeiro
- Avisos
- Aluno: Estatísticas pessoais, últimas notas, documentos pendentes, avisos recentes
- Professor: Turmas ativas, total de alunos, notas pendentes, próximas aulas
- Recepção: KPIs (total de alunos, mensalidades pendentes/pagas), atalhos rápidos
- Admin: Métricas gerais da instituição, gráficos de matrículas, atividades recentes
- Visualização: Todos os perfis podem visualizar avisos direcionados a eles
- Criação: Professores, Coordenação e Administrativo podem criar avisos
- Escopo:
- Para turma específica
- Para alunos específicos
- Para todos os alunos
- Filtros: Por data, autor, público-alvo
- Visualização do checklist de documentos obrigatórios
- Status de cada documento:
pending(pendente) oudelivered(entregue) - Progresso percentual de documentação completa
- Observações da recepção sobre documentos
Documentos Gerenciados:
- RG (Identidade)
- CPF
- Histórico Escolar
- Comprovante de Residência
- Certidão de Nascimento
- Foto 3x4
- Outros documentos conforme necessário
- Visualização de notas por disciplina
- Histórico de avaliações
- Média geral
- Detalhamento por turma/disciplina
- Listagem de mensalidades
- Status de pagamento (pendente/pago)
- Valor da mensalidade
- Data de vencimento
- Histórico de pagamentos
- Detalhes de cada pagamento (data, forma de pagamento, valor pago)
- Listagem de turmas vinculadas ao professor
- Criar nova turma
- Editar informações da turma
- Visualizar alunos da turma
- Finalizar turma (encerrar período)
- Vincular disciplinas à turma
- Vincular alunos à turma
Informações da Turma:
- Nome
- Tag/Identificador
- Data de início
- Data de término
- Status (ativa/finalizada)
- Disciplinas vinculadas
- Lista de alunos
- Selecionar turma e disciplina
- Lançar notas para avaliações
- Editar notas já lançadas
- Visualizar histórico de lançamentos
- Calcular médias automaticamente
- Criar avisos
- Selecionar público-alvo:
- Turma específica
- Alunos selecionados
- Visualizar avisos criados
- Visualizar avisos da coordenação/administração
- Listagem de todos os alunos cadastrados
- Cadastro de novos alunos
- Edição de dados de alunos (nome, telefone)
- Visualização de perfil completo do aluno
Dados do Aluno:
- Nome completo
- Telefone
- Status acadêmico
- Turma atual
- Acesso aos documentos de qualquer aluno
- Marcar documentos como entregues
- Adicionar observações sobre documentos
- Rejeitar documentos (com motivo)
- Visualizar progresso de documentação por aluno
- Listagem de mensalidades (pendentes/pagas/todas)
- Filtrar por aluno específico
- Registrar pagamento de mensalidade:
- Valor pago
- Forma de pagamento (dinheiro, PIX, débito, crédito)
- Data de pagamento
- Visualizar histórico de pagamentos
- Gerar recibo de pagamento (futuro)
- Listagem completa de alunos
- Filtros e busca avançada
- Visualização de perfil detalhado
- Edição de dados acadêmicos
- Histórico acadêmico completo
- Vinculação a turmas
- Listagem de professores
- Cadastro de novos professores
- Edição de dados
- Vinculação a turmas
- Histórico de turmas ministradas
- Listagem de todas as turmas (ativas e finalizadas)
- Criação de novas turmas
- Edição de turmas
- Finalização de turmas
- Relatórios de turmas
- Vincular/desvincular professores
- Vincular/desvincular alunos
- Gerenciar cursos oferecidos:
- Técnico em Enfermagem (18 meses)
- Auxiliar de Enfermagem (12 meses)
- Especialização em Urgência (6 meses)
- Editar informações dos cursos
- Configurar ementas
- Definir módulos
- Visão completa do financeiro da instituição
- Controle de mensalidades
- Relatórios financeiros:
- Receitas por mês
- Mensalidades pendentes
- Formas de pagamento
- Análise de inadimplência
- Gestão de custos internos (futuro)
- Dashboard com métricas financeiras
- Criar avisos gerais ou específicos
- Gerenciar todos os avisos do sistema
- Editar/Excluir avisos
- Histórico de avisos enviados
-
Senha:
- Mínimo de 6 caracteres
- Deve conter pelo menos 1 letra maiúscula
- Deve conter pelo menos 1 número
-
Sessão:
- Sessões são gerenciadas pelo Supabase
- Refresh automático de sessão via middleware
- Redirecionamento automático após login baseado no role
-
Rotas Protegidas:
- Todas as rotas em
(app)/requerem autenticação - Usuários não autenticados são redirecionados para
/login - Usuários autenticados tentando acessar
/loginou/signupsão redirecionados para sua área
- Todas as rotas em
-
Status de Documentos:
pending: Documento ainda não entreguedelivered: Documento entregue e aprovado
-
Permissões de Edição:
- Alunos podem apenas visualizar seus documentos
- Recepção, Coordenação e Administrativo podem editar documentos (marcar como entregue, adicionar observações)
-
Documentos Obrigatórios:
- Sistema diferencia documentos obrigatórios (
required: true) e opcionais - Progresso calculado apenas com base em documentos obrigatórios
- Sistema diferencia documentos obrigatórios (
-
Mensalidades:
- Cada mensalidade pertence a um aluno
- Possui competência (ano e mês)
- Status:
pendenteoupago - Valor previsto (
valor_mensalidade) e valor pago (valor_pago)
-
Registro de Pagamento:
- Apenas Recepção e Administrativo podem registrar pagamentos
- Campos obrigatórios:
- Valor pago
- Forma de pagamento (dinheiro, PIX, débito, crédito)
- Data de pagamento (formato YYYY-MM-DD)
- Validação: valor deve ser maior que zero
- Proteção: mensalidades já pagas só podem ser editadas por Administrativo
-
Visualização:
- Alunos veem apenas suas próprias mensalidades
- Recepção e Administrativo veem todas as mensalidades
- Filtros disponíveis: por status, por aluno, por competência
-
Criação:
- Apenas Professores podem criar turmas
- Campos obrigatórios:
- Nome
- Tag/Identificador
- Data de início
- Data de término
- Professor pode vincular disciplinas e alunos na criação
-
Status:
ativa: Turma em andamentofinalizada: Turma concluída
-
Finalização:
- Apenas o professor responsável pode finalizar a turma
- Após finalização, turma não pode ser editada
-
Criação:
- Professores, Coordenação e Administrativo podem criar avisos
- Campos obrigatórios:
- Título
- Mensagem
- Público-alvo (turma ou alunos específicos)
-
Visibilidade:
- Alunos veem avisos direcionados a eles ou suas turmas
- Professores veem avisos próprios e avisos da coordenação/administração
- Recepção vê avisos apenas como leitura
-
Lançamento:
- Apenas Professores podem lançar notas
- Notas são vinculadas a turma, disciplina e aluno
- Validação de valores (geralmente 0-10)
-
Visualização:
- Alunos veem apenas suas próprias notas
- Professores veem notas de suas turmas
- Administrativo/Coordenação veem todas as notas
Armazena informações dos usuários do sistema.
{
user_id: string; // FK para auth.users
name: string | null;
email: string | null;
telefone: string | null;
avatar_url: string | null;
role: string | null; // 'aluno', 'professor', 'recepção', 'administrativo', 'coordenação'
}Armazena informações das turmas.
{
id: string;
name: string;
tag: string;
start_date: string; // ISO date
end_date: string; // ISO date
status: "ativa" | "finalizada";
created_by: string; // FK para profiles.user_id
}Armazena informações de mensalidades dos alunos.
{
id: string;
student_id: string; // FK para profiles.user_id
competence_year: number;
competence_month: number; // 1-12
status: "pendente" | "pago";
valor_mensalidade: number;
valor_pago: number | null;
forma_pagamento: "dinheiro" | "pix" | "debito" | "credito" | null;
data_pagamento: string | null; // YYYY-MM-DD
updated_at: string; // ISO datetime
}Armazena avisos do sistema.
{
id: string;
title: string;
message: string;
author_id: string; // FK para profiles.user_id
author_role: string; // 'professor' | 'coordenação' | 'administrativo'
created_at: string; // ISO datetime
scope_type: "turma" | "alunos";
class_id: string | null; // FK para turma.id (se scope_type = 'turma')
}turma_professor: Vincula professores a turmasturma_aluno: Vincula alunos a turmasturma_disciplina: Vincula disciplinas a turmasaviso_aluno: Vincula avisos a alunos específicos (quando scope_type = 'alunos')nota: Armazena notas dos alunos (turma, disciplina, aluno, valor, data)documento: Armazena informações sobre documentos dos alunosdocumento_tipo: Tipos de documentos (RG, CPF, etc.)
- Usuário acessa
/signup - Preenche formulário (nome, email, senha)
- Sistema valida senha (mínimo 6 caracteres, 1 maiúscula, 1 número)
- Conta é criada no Supabase Auth
- Email de verificação é enviado
- Usuário acessa
/verify-emaile verifica email - Após verificação, usuário faz login
- Sistema identifica o role do usuário no perfil
- Redireciona para área correspondente:
- Aluno →
/aluno - Professor →
/professores - Recepção →
/recepcao - Admin/Coordenação →
/admin
- Aluno →
Visão Aluno:
- Aluno acessa
/aluno/documentos - Visualiza lista de documentos obrigatórios
- Vê status de cada documento (pendente/entregue)
- Lê observações da recepção (se houver)
Visão Recepção:
- Recepção acessa
/recepcao/documentos - Seleciona aluno
- Visualiza documentos do aluno
- Marca documentos como entregues quando recebidos
- Adiciona observações sobre documentos
Registro de Pagamento:
- Recepção acessa
/recepcao/financeiro - Visualiza lista de mensalidades pendentes
- Seleciona mensalidade a pagar
- Preenche formulário:
- Valor pago
- Forma de pagamento
- Data de pagamento
- Sistema atualiza status para "pago"
- Aluno recebe notificação (futuro)
Consulta do Aluno:
- Aluno acessa
/aluno/financeiro - Visualiza suas mensalidades
- Vê status de cada uma (pendente/pago)
- Acessa histórico de pagamentos
- Professor acessa
/professores/turmas - Clica em "Criar Nova Turma"
- Preenche formulário:
- Nome da turma
- Tag/Identificador
- Data de início
- Data de término
- Seleciona disciplinas
- Seleciona alunos
- Sistema cria turma no banco
- Vincula professor, disciplinas e alunos
- Turma aparece na lista do professor
- Professor acessa
/professores/notas - Seleciona turma e disciplina
- Visualiza lista de alunos da turma
- Para cada aluno, insere nota da avaliação
- Sistema valida e salva notas
- Alunos podem visualizar notas em
/aluno/notas
- Professor/Admin acessa área de avisos
- Clica em "Criar Aviso"
- Preenche:
- Título
- Mensagem
- Seleciona público-alvo (turma ou alunos específicos)
- Sistema cria aviso e vincula ao público-alvo
- Alunos/Professores visualizam aviso em suas áreas
- Apresentação da instituição
- Informações sobre cursos
- Seção "Sobre"
- Localização
- Links para login e cadastro
Cursos Apresentados:
- Técnico em Enfermagem (18 meses, 12 módulos)
- Auxiliar de Enfermagem (12 meses, 8 módulos)
- Especialização em Urgência (6 meses, 6 módulos)
Button,Input,Label,SelectTable,Dialog,Dropdown MenuForm,Checkbox,TextareaSidebar,Sheet,TooltipAvatar,Separator,Skeleton
ProtectedRoute: Protege rotas que requerem autenticaçãoAppSidebar: Sidebar dinâmica baseada no role do usuárioDocumentsView: Visualização e gestão de documentosDocumentCard: Card individual de documentoFinanceiroAdminView: Dashboard financeiro para adminFinanceiroRecepcaoView: Interface financeira para recepçãoFinanceiroAlunoView: Interface financeira para alunosTeacherClassesView: Gestão de turmas para professoresCreateClassModal: Modal para criação de turmaTeacherNoticesView: Gestão de avisos para professores
O sistema requer as seguintes variáveis de ambiente:
NEXT_PUBLIC_SUPABASE_URL=url_do_seu_projeto_supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=chave_anonima_do_supabaseMuitas funcionalidades estão com placeholders ou dados mock. O sistema está preparado para integração completa com Supabase, mas algumas queries ainda precisam ser implementadas. Os arquivos de actions (app/_lib/actions/*.ts) contêm comentários TODO SUPABASE indicando onde a integração deve ser feita.
- Sistema de Upload de Arquivos: Permitir que alunos façam upload de documentos
- Geração de Recibos: Emissão automática de recibos de pagamento
- Notificações: Sistema de notificações em tempo real
- Relatórios: Geração de relatórios em PDF
- Dashboard Analítico: Gráficos e métricas avançadas
- Sistema de Frequência: Controle de frequência de alunos
- Calendário Acadêmico: Gestão de eventos e datas importantes
- Chat/Mensagens: Comunicação direta entre usuários
- Backup Automático: Backup periódico dos dados
- Auditoria: Log de todas as ações importantes
O sistema UNIENF é uma plataforma completa de gestão acadêmica desenvolvida com tecnologias modernas e seguindo boas práticas de desenvolvimento. O sistema está estruturado para suportar o crescimento da instituição e pode ser facilmente expandido com novas funcionalidades conforme necessário.
A arquitetura baseada em roles permite controle granular de acesso, garantindo que cada usuário tenha acesso apenas às funcionalidades apropriadas para seu perfil. A integração com Supabase fornece uma base sólida e escalável para o armazenamento de dados e autenticação.
Última Atualização: Janeiro 2025
Versão do Sistema: 0.1.0