O Sistema de Gestão de Projetos Integradores (SGPI) é uma plataforma web completa e robusta, desenvolvida especificamente para a FATEC Zona Leste, no curso de Desenvolvimento de Software Multiplataforma (DSM). O sistema foi projetado para centralizar e otimizar todos os aspectos do gerenciamento dos Projetos Integradores, desde o cadastro até a avaliação final.
Facilitar o processo acadêmico dos Projetos Integradores através de uma solução integrada que atende às necessidades específicas de todos os envolvidos no processo educacional.
O sistema oferece uma experiência personalizada para cinco perfis distintos:
-
👨🎓 Alunos
- Submissão de entregas com versionamento automático
- Acompanhamento de prazos e lista de atividades
- Visualização de notas e feedbacks detalhados
- Solicitação de reconsideração de notas (15 dias)
- Dashboard personalizado
-
👨🏫 Professores
- Criação e gestão de atividades com critérios personalizados
- Sistema de avaliação
- Devolutivas com arquivos corrigidos
- Gestão de pedidos de reconsideração
- Controle de publicação de notas
-
🎯 Professores Orientadores
- Todas as funcionalidades de professor
- Acompanhamento especializado dos grupos sob orientação
- Acompanhamento dos projetos
- Dashboard com visão consolidada
-
👩💼 Coordenadores
- Visão estratégica do desempenho geral
- Gestão de semestres e períodos letivos
- Controle de palavras-chave de acesso das contas professor e orientador
- Relatórios consolidados (grupo, semestre, orientador)
- Ativação/desativação de período de matrículas
- Exportação de dados para CPS
-
🔧 Administradores
- Controle total do sistema
- Gestão completa de usuários e permissões
- Configurações globais do sistema
- Sistema de auditoria e logs
- Gerenciamento de disciplinas
Sistema de login seguro com validação |
Cadastro multi-perfil intuitivo |
Dashboard do Aluno - Acompanhamento de projetos |
Dashboard do Professor - Avaliações e turmas |
Dashboard do Coordenador - Visão geral do desempenho
Interface completa para criação e organização de grupos por Diciplina de Orientação
Sistema de upload de documentos dos projetos
Interface de avaliação com feedback |
Sistema de pedidos de reconsideração |
Geração automática de relatórios com exportação em excel
Sistema integrado de notificações por e-mail e in-app
|
|
|
|
|
O projeto segue uma arquitetura MVC robusta e escalável com clara separação de responsabilidades, desenvolvida em etapas evolutivas ao longo de 6 meses.
sgpi/
│
├── 📁 backend/
│ ├── 📁 helpers/ # Funções de ajuda (JWT, Respostas)
│ │ ├── 📄 jwt.js
│ │ └── 📄 response.js
│ │
│ ├── 📁 middlewares/ # Interceptadores de requisição
│ │ ├── 📄 auth.js
│ │ ├── 📄 authPerfil.js
│ │ ├── 📄 errorHandler.js
│ │ ├── 📄 notFound.js
│ │ └── 📄 responseMiddleware.js
│ │
│ ├── 📁 routes/ # Definição das rotas da API
│ │ ├── 📄 alunoAtividadesRoutes.js
│ │ ├── 📄 atividadesProfessorRoutes.js
│ │ ├── 📄 atualizarPerfil.js
│ │ ├── 📄 auth.js
│ │ ├── 📄 configRoutes.js
│ │ ├── 📄 CoordenadorProjetos.js
│ │ ├── 📄 CoordenadorRelatorios.js
│ │ ├── 📄 entregas.js
│ │ ├── 📄 grupos.js
│ │ ├── 📄 notificacoes.js
│ │ ├── 📄 painelSemestre.js
│ │ ├── 📄 palavraChave.js
│ │ └── 📄 perfilAcademico.js
│ │
│ ├── 📁 services/ # Lógica de negócios e serviços externos
│ │ └── 📄 emailValidationService.js
│ │
│ ├── 📁 uploads/ # Diretório temporário para uploads
│ │
│ ├── 📁 utils/ # Utilitários do Backend (SQL, Templates, Notificações)
│ │ ├── 📄 emailTemplates.js
│ │ ├── 📄 notificationUtils.js
│ │ ├── 📄 safeRealase.js
│ │ └── 📄 sqlUtils.js
│ │
│ ├── 📁 node_modules/ # Dependências do backend
│ ├── 📄 .env # Variáveis de ambiente
│ ├── 📄 .gitignore # Ignorar arquivos no Git (Backend)
│ ├── 📄 conexaoMysql.js # Configuração de conexão com Banco de Dados
│ ├── 📄 package-lock.json
│ ├── 📄 package.json
│ └── 📄 server.js # Ponto de entrada da API
│
├── 📁 frontend/
│ ├── 📁 css/ # Estilos do sistema
│ ├── 📁 imagens/ # Assets e imagens
│ ├── 📁 views/ # Telas e templates HTML
│ │
│ ├── 📁 javaScript/ # Lógica do Cliente
│ │ │
│ │ ├── 📁 front_end/ # Manipulação direta do DOM e Eventos
│ │ │ └── (Arquivos de lógica de página)
│ │ │
│ │ ├── 📁 services/ # Camada de comunicação com API (Fetch/Axios)
│ │ │ └── (Arquivos de requisição)
│ │ │
│ │ └── 📁 utils/ # Funções auxiliares e reutilizáveis do DOM
│ │ ├── 📄 alerts.js
│ │ ├── 📄 confirmDialog.js
│ │ ├── 📄 descricaoLista.js
│ │ ├── 📄 efeitoMenu.js
│ │ ├── 📄 fetchHelper.js
│ │ ├── 📄 formatDate.js
│ │ ├── 📄 navigation-buttons.js
│ │ ├── 📄 perfilNavigation.js
│ │ └── 📄 visibilidade_senhas.js
│ │
│ └── 📁 node_modules/ # Dependências globais/frontend
│
├── 📄 .gitignore # Configuração Git global
├── 📄 comentarios.txt # Anotações do desenvolvimento
├── 📄 package-lock.json
├── 📄 package.json
└── 📄 README.md # Documentação do projeto
⬇️ REQUISIÇÃO (Entrada)
┌───────────────────────────────────────────────────────────────┐
│ 📡 SERVER / SECURITY │
│ Arquivo: server.js │
│ (Helmet, CORS, Rate Limit, Parser JSON) │
└──────────────────────────────┬────────────────────────────────┘
│
┌──────────────────────────────▼────────────────────────────────┐
│ 🛡️ MIDDLEWARES (Interceptadores) │
│ Pasta: /middlewares │
│ (Auth.js, AuthPerfil.js) │
└──────────────────────────────┬────────────────────────────────┘
│
┌──────────────────────────────▼────────────────────────────────┐
│ 🚦 ROUTES / CONTROLLERS (Gerenciamento de Pedidos) │
│ Pasta: /routes │
│ (Recebe o pedido, chama validações, decide o fluxo) │
│ ├── 🛠️ Helpers (jwt.js, response.js) │
│ └── 🧪 Utils (validations) │
└──────────────────────────────┬────────────────────────────────┘
│
┌──────────────────────────────▼────────────────────────────────┐
│ 🧠 SERVICES / BUSINESS LOGIC (Regras de Negócio) │
│ Pasta: /services & Lógica dentro das rotas │
│ (Processamento de dados, Regras complexas, Envio de E-mail) │
│ └── 📧 Utils (emailTemplates.js, notificationUtils.js) │
└──────────────────────────────┬────────────────────────────────┘
│
┌──────────────────────────────▼────────────────────────────────┐
│ 💾 DAL (Data Access Layer) │
│ Arquivo: conexaoMySql.js & sqlUtils.js │
│ (Pool de conexões, Queries SQL, Transações) │
└───────────────────────────────────────────────────────────────┘
⬇️ RESPOSTA (Saída via responseMiddleware/Global Handler)
- Estruturação inicial com Routes, Views e JavaScript
- Implementação de RBAC básico
- Separação clara de responsabilidades
- Criação de funções auxiliares reutilizáveis
- Middlewares de autenticação e autorização
- Centralização de lógica comum
- Organização em
front_end/,services/eutils/ - Modularização do código cliente
- Padrão de comunicação API definido
- Migração para ES6 modules (import/export)
- Eliminação de código duplicado
- Padronização de nomenclatura
- Separação de estilos globais e específicos
- Eliminação de duplicações
- Sistema de design consistente
Responsabilidades:
- Renderização de interfaces responsivas (HTML5/CSS3)
- Manipulação de eventos do usuário (JavaScript ES6+)
- Validação de formulários no cliente
- Gerenciamento de estado da aplicação
- Consumo de APIs REST via Fetch
- Cache de imagens e otimização de performance
- Feedback visual ao usuário (loaders, toasts, modals)
Tecnologias: HTML5, CSS3, JavaScript Vanilla, UserWay Widget
Responsabilidades:
- Recepção e validação inicial de requisições HTTP
- Roteamento e delegação para Services
- Formatação de respostas JSON padronizadas
- Tratamento de erros HTTP (400, 401, 403, 404, 409, 422, 500)
- Paginação e filtragem de dados
- Logging de requisições
Padrão de Resposta:
{
success: boolean,
data: any,
message: string,
errorCode?: string
}Responsabilidades:
- Implementação de todas as regras de negócio
- Orquestração de operações complexas multi-tabela
- Validações de domínio específico
- Integração entre múltiplos módulos
- Processamento e transformação de dados
- Gerenciamento de transações
- Chamadas para procedures e triggers
Exemplos: Cálculo de médias, validação de prazos, lógica de reconsideração
Responsabilidades:
- Autenticação: Verificação de JWT access/refresh tokens
- Autorização: RBAC (Role-Based Access Control)
- Validação: Schema validation (Joi) de requisições
- Segurança: Rate limiting, CORS, Helmet
- Logging: Estruturado com correlationId
- Auditoria: Registro de ações críticas
- Error Handling: Tratamento global de exceções
Responsabilidades:
- Funções reutilizáveis e puras
- Envio de e-mails via Nodemailer
- Manipulação e otimização de arquivos (Sharp)
- Formatação e validação de datas
- Criptografia e hashing (bcrypt)
- Geração de tokens e chaves
- Sanitização de dados
sqlUtils.extractRows(): Normalização de resultados MySQL
Responsabilidades:
- Pool de Conexões: MySQL com reuso eficiente
- Queries Otimizadas: SQL com índices e prepared statements
- Transações: ACID compliance
- Stored Procedures: Lógica complexa no banco
- Triggers: Automação de históricos e auditoria
- Migrations: Versionamento de schema
- Seeds: Dados iniciais para dev/test
- Validação de Integridade: Constraints e foreign keys
Otimizações:
- Índices em colunas de busca frequente
- Índices funcionais (ex:
UPPER(email)) - Pool com reuso de conexões
- Binds nomeados para segurança
┌─────────────────────────────────────────────────────┐
│ 1. CORS + Helmet (Headers de Segurança) │
├─────────────────────────────────────────────────────┤
│ 2. Rate Limiting (Proteção contra Brute Force) │
├─────────────────────────────────────────────────────┤
│ 3. JWT Authentication (Access + Refresh Tokens) │
├─────────────────────────────────────────────────────┤
│ 4. RBAC Authorization (Permissões por Role) │
├─────────────────────────────────────────────────────┤
│ 5. Input Validation (Joi Schema) │
├─────────────────────────────────────────────────────┤
│ 6. SQL Injection Prevention (Prepared Statements) │
├─────────────────────────────────────────────────────┤
│ 7. File Upload Validation (Magic Numbers + Size) │
├─────────────────────────────────────────────────────┤
│ 8. EXIF Metadata Removal (Privacidade) │
├─────────────────────────────────────────────────────┤
│ 9. Sensitive Data Sanitization (Logs sem senhas) │
├─────────────────────────────────────────────────────┤
│ 10. LGPD Compliance (Termos + Política) │
└─────────────────────────────────────────────────────┘
- Configuração do banco de dados MySQL
- Migração de Oracle para MySQL
- Arquitetura MVC implementada
- Sistema de autenticação JWT
- RBAC com 5 perfis de usuários
- Sistema de chaves de acesso (8 dígitos alfanuméricos)
- Engine de notificações por e-mail
- Padrão de respostas e tratamento global de erros
- CRUD completo de usuários
- Gestão de disciplinas
- Sistema de semestres com histórico
- Painel de controle de matrículas
- Atribuição de orientadores via chave
- Login multi-perfil funcional
- CRUD de grupos com membros e líder
- CRUD de projetos PI
- Vinculação de orientadores
- Sistema de migração de grupos entre semestres
- Recuperação de senha via e-mail
- Compliance LGPD (Termos de Uso)
- CRUD de atividades com critérios
- Sistema de entregas com versionamento
- Upload robusto de múltiplos arquivos
- Escala de Avaliação Personalizável
- Lançamento de notas e cálculo de médias
- Devolutivas com arquivos corrigidos
- Controle de publicação de notas
- Sistema de reconsideração de notas (15 dias)
- Calendário de prazos integrado
- Alertas automáticos de prazos
- Acessibilidade visual (UserWay Widget)
- Relatórios por grupo, semestre e orientador
- Exportação em PDF, Excel e CSV
- Layout responsivo completo
- Testes de integração
- Testes E2E frontend
- Testes funcionais e de usabilidade
- Dashboard personalizado para cada perfil
- Painel de disciplinas
- Documentação final completa
- Sistema de auditoria completo com rastreabilidade
- Backup automatizado com procedimentos de recuperação
- API externa para integração com sistemas institucionais
- Dashboard com métricas avançadas (Prometheus)
- Notificações push em tempo real
- Sistema de chat entre orientadores e grupos
| 51 User Stories |
48 Concluídas |
3 Futuras |
~750h Desenvolvimento |
94% Taxa Conclusão |
Antes de começar, você precisará ter instalado em sua máquina:
- Node.js (versão 14 ou superior)
- MySQL (versão 8.0 ou superior)
- Git
- NPM ou Yarn# Clone o repositório
git clone https://github.com/seu-usuario/sistema-gestao-pis.git
# Acesse o diretório do projeto
cd sistema-gestao-pis
# Instale as dependências
npm install- Configure o Banco de Dados MySQL:
# Crie o banco de dados
mysql -u root -p
# Dentro do MySQL, crie o banco
CREATE DATABASE sgpi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Saia do MySQL
exit;- Os scripts de criação do banco estão em
database/(não versionados no Git por segurança) - Entre em contato com a equipe de desenvolvimento para obter os scripts completos
- Para ambientes de produção, consulte o DBA da instituição
- Documentação completa do banco disponível na documentação técnica oficial
Observação: O sistema utiliza recursos avançados do MySQL:
- Tabelas de histórico para auditoria
- Stored procedures para lógica complexa
- Triggers para automação
- Índices otimizados para performance
- Configure as Variáveis de Ambiente:
Crie um arquivo .env na pasta backend/:
# ============================================
# BANCO DE DADOS MYSQL
# ============================================
DB_HOST=localhost
DB_PORT=3306
DB_USER=seu_usuario_mysql
DB_PASSWORD=sua_senha_mysql
DB_NAME=sgpi
# ============================================
# SERVIDOR
# ============================================
PORT=3000
# ============================================
# AUTENTICAÇÃO JWT
# ============================================
# IMPORTANTE: Gere chaves fortes e únicas
# Use: node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
JWT_SECRET=sua_chave_secreta_jwt_aqui
JWT_EXPIRES_IN=1h
# ============================================
# EMAIL (NODEMAILER)
# ============================================
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=email_institucional@gmail.com
EMAIL_PASSWORD=senha_de_aplicativo_aqui
- NUNCA commite o arquivo
.envno Git - SEMPRE use valores diferentes em desenvolvimento e produção
- Para produção, consulte o departamento de TI da instituição
- Gere chaves JWT únicas e fortes (64+ caracteres)
- Use e-mails institucionais da FATEC
# Entre na pasta do backend
cd backend
# Inicie o servidor de desenvolvimento
npm start
# Ou com nodemon para auto-reload (desenvolvimento)
npm run dev
# O servidor estará rodando em http://localhost:3000Por questões de segurança institucional, as credenciais de acesso e dados de seed não estão incluídas neste repositório público.
Para ambientes de desenvolvimento local:
- Entre em contato com a equipe CODECEPS
- Solicite o pacote de setup de desenvolvimento
- Siga as instruções de configuração inicial fornecidas
Para implantação institucional:
- Consulte o departamento de TI da FATEC
- Solicite acesso ao repositório interno com dados sensíveis
- Utilize as credenciais institucionais fornecidas pela coordenação
Primeiro Acesso (Após Setup):
- O sistema criará automaticamente um usuário administrador inicial
- As credenciais serão fornecidas durante o processo de instalação
- Altere todas as senhas padrão no primeiro login
O projeto possui documentação completa e detalhada para facilitar o entendimento, uso e manutenção do sistema:
|
Documentação Final Acessar PDF 140+ páginas com arquitetura, implementação e testes |
API Documentation (futuramente) Acessar Endpoints, payloads e exemplos de uso |
A documentação oficial do projeto abrange:
-
Arquitetura e Implementação Técnica
- Estrutura evolutiva do projeto (5 etapas)
- 10 Fases de implementação detalhadas
- Cronograma de execução (6 meses)
-
Frontend
- Estrutura e navegação
- Funcionalidades de cadastro e autenticação
- Gestão acadêmica completa
- Sistema de atividades e avaliações
- Relatórios e notificações
- Recursos de acessibilidade
-
Backend
- Migração Oracle → MySQL
- Sistema de autenticação e autorização
- Rotas e APIs RESTful
- Gestão de projetos, grupos e atividades
- Sistema de notificações e jobs
-
Banco de Dados
- Modelagem completa
- Scripts SQL versionados
- Testes de mesa e validação
- Otimizações e índices
- Procedures e triggers
-
Plano de Testes
- Testes funcionais por perfil
- Testes de usabilidade
- Testes de integração
- Testes E2E frontend
-
Considerações Finais
- Tecnologias utilizadas
- Padrões e boas práticas
- Segurança e escalabilidade
Nicole Lisboa Frontend Developer |
Luiz Carlos Scrum Master |
Kaique Santos Backend Developer |
Diego Marques Documentation Specialist |
Vinicius Crepaldi Database Administrator |
Contribuições são sempre bem-vindas! Se você tem interesse em melhorar o projeto:
- 🍴 Faça um fork do projeto
- 🌿 Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - ✅ Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - 📤 Push para a branch (
git push origin feature/MinhaFeature) - 🎉 Abra um Pull Request
Seguimos o padrão de commits semânticos:
feat: adiciona nova funcionalidade
fix: corrige um bug
docs: atualiza documentação
style: formatação de código
refactor: refatoração de código
test: adiciona testes
chore: tarefas gerais
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Este sistema foi desenvolvido como Projeto Integrador do curso de Desenvolvimento de Software Multiplataforma da FATEC Zona Leste, com o objetivo de:
- ✅ Modernizar a gestão dos Projetos Integradores na instituição
- ✅ Centralizar informações acadêmicas de forma organizada
- ✅ Facilitar a comunicação entre alunos, professores e coordenação
- ✅ Fornecer relatórios gerenciais para tomada de decisão
- ✅ Servir como referência para implementação em outras FATECs
O SGPI tem potencial para:
- 📊 Reduzir tempo de gestão administrativa em até 60%
- 🎯 Melhorar acompanhamento de grupos por orientadores
- 📈 Aumentar transparência no processo avaliativo
- 🔄 Facilitar migração de grupos entre semestres
- 🌐 Expandir para outras unidades da rede FATEC
Encontrou algum problema ou tem sugestões sobre o projeto?
|
Email para contato kaiquecaitano334@gmail.com |
Issues no GitHub Reportar Problema |
Ao reportar um bug, por favor inclua:
- Descrição clara do problema
- Passos para reproduzir
- Comportamento esperado vs. obtido
- Screenshots (se aplicável)
- Ambiente (navegador, OS, versão do Node)
Adoramos receber sugestões! Para propor melhorias:
- Descreva claramente a funcionalidade desejada
- Explique o problema que ela resolve
- Sugira uma possível implementação
- Considere o impacto em usuários existentes







