SIGA DAINF — Documentação do Projeto

Desenvolvimento dos sistemas acadêmicos do Departamento Acadêmico de Informática (DAINF) — UTFPR. Base de estudo para a equipe de extensão.

Projeto de extensão UTFPR Open source no GitHub Stack: HTML/JS + PHP + MySQL

1.Visão geral

O DAINF mantém sistemas acadêmicos usados por alunos e professores para gestão de TCC, estágios, atividades complementares e atividades extensionistas. O projeto de extensão da UTFPR tem como objetivo desenvolver, documentar e evoluir esses sistemas de forma colaborativa e aberta.

Objetivos do projeto

  • Desenvolver sistemas web completos para a gestão acadêmica do departamento;
  • Capacitar alunos em desenvolvimento web (front-end e back-end) e modelagem de software;
  • Liberar o código como software livre no GitHub;
  • Servir de base para trabalhos de extensão, TCC e relatórios acadêmicos.

2.Os sistemas (subdomínios)

SubdomínioSistemaDescrição
tcc.dainf.com.brGestão de TCCSubmissão de documentos de TCC, bancas e acompanhamento.
estagio.dainf.com.brGestão de EstágiosDocumentos de estágio obrigatório e não obrigatório.
ac.dainf.com.br + atividades / ativ / horasAtividades ComplementaresRegistro de atividades com carga horária por grupo (cultural/esporte, retorno à sociedade, técnico-científico).
extensao.dainf.com.brAtividades ExtensionistasRegistro e validação de atividades de extensão.
centraldedrones.com.brCentral de DronesEmpréstimo de drones DJI e treinamentos internos.
impressoras.dainf.com.brImpressoras 3DSolicitação de impressão para alunos e servidores.
horarios.dainf.com.brHoráriosGrade horária das disciplinas do DAINF.
dainf.com.brPortalPágina inicial com links para todos os sistemas.
sigautfpr.com.brDocumentaçãoEsta página: passo a passo do desenvolvimento, modelagem e código.

Importante: TCC, Estágio, Atividades Complementares e Extensão compartilham a mesma aplicação — a diferença é o tipo de documento selecionado no painel. Isso mantém uma única base de código (um único repositório no GitHub), mais fácil de manter.

3.Arquitetura da aplicação

A aplicação segue o modelo front-end estático + API REST em PHP, sem framework, para facilitar o aprendizado:

dainf/
├── app/
│   ├── index.html        # tela de login
│   ├── painel.html       # painel do aluno (envio/consulta de documentos)
│   └── backend/
│       ├── api.php       # API REST (login, upload, listagem, download)
│       ├── recognition.php  # reconhecimento/validação de certificados
│       └── uploads/      # arquivos enviados (PDF, imagens)
├── www/                  # portal dainf.com.br
└── siga/                 # esta documentação

Fluxo da aplicação

  1. O aluno acessa o subdomínio e faz login (e-mail/matrícula + senha).
  2. A API gera um token de sessão (24 h) e o retorna.
  3. O painel envia documentos (PDF) com tipo (tcc, estagio, atividade_complementar, extensao), categoria e carga horária.
  4. O painel consulta a carga horária acumulada por grupo de atividades aprovadas.

Tecnologias

4.Banco de dados

Banco sistema_academico. Esquema atual:

usuarios    (id, nome, email, matricula, senha, ativo, created_at)
documentos  (id, user_id, tipo, categoria, titulo, descricao,
             carga_horaria, nome_arquivo, caminho_arquivo,
             data_upload, status)
user_tokens (id, user_id, token, expires_at)

-- tipo: 'tcc' | 'estagio' | 'atividade_complementar' | 'extensao'
-- categoria (AC): 'cultural_esporte' | 'retorno_sociedade' | 'tecnico_cientifico'
-- status: 'pendente' | 'aprovado' | 'reprovado'

Melhorias futuras sugeridas para a equipe: tabela de administradores/avaliadores, tabela de categorias dinâmicas (hoje as categorias são fixas) e índice em user_id + tipo.

5.Equipe e papéis

IntegrantePapelResponsabilidades
LenonBack-endAPI PHP, banco de dados, autenticação, upload de arquivos, relatório técnico.
NatanaelFront-endTelas de login e painel, usabilidade, responsividade.
LeonnFront-endEstilo/UI, portal dainf.com.br, documentação visual.
Prof. WelltonOrientaçãoArquitetura, infraestrutura, revisão e publicação.

⬇ Baixar o relatório de atividades (Word) — modelo do Lenon

6.Passo a passo do desenvolvimento

Esta é a ordem que foi seguida para colocar os sistemas no ar — use como guia:

  1. Levantamento de requisitos: definir o que cada sistema registra (documentos, tipos, categorias, carga horária).
  2. Modelagem: desenhar os diagramas UML (casos de uso, classes e sequência) — veja a seção 7.
  3. Banco de dados: criar o esquema (tabelas usuarios, documentos, user_tokens).
  4. Back-end (API): implementar as ações da API (login, upload_document, get_documents, get_carga_horaria_resumo…).
  5. Front-end: tela de login e painel consumindo a API via fetch.
  6. Testes: testar login, envio de PDF, listagem e download.
  7. Publicação: subdomínios no DNS, Nginx, PHP-FPM e HTTPS.
  8. Versionamento: publicar o código no GitHub com licença livre.
  9. Documentação: manter esta página e o relatório atualizados.

7.Modelagem UML — prompts de IA prontos

Para gerar os diagramas UML de cada sistema, use os prompts abaixo em uma ferramenta de IA (ChatGPT, Claude, Gemini ou gerador de diagramas como Mermaid). Cole o prompt e substitua [SISTEMA] pelo nome do sistema:

Diagrama de Casos de Uso

Gere um diagrama de casos de uso (UML) em Mermaid para o sistema "[SISTEMA]" do DAINF da UTFPR. Atores: Aluno, Avaliador/Professor e Administrador. Casos de uso: fazer login, enviar documento, listar meus documentos, baixar documento, consultar carga horária, aprovar/reprovar documento, cadastrar usuário. Inclua relacionamentos include/extend e saia com o código Mermaid.

Diagrama de Classes

Gere um diagrama de classes (UML) em Mermaid para o sistema "[SISTEMA]" com as entidades: Usuario (id, nome, email, matricula, senha, ativo), Documento (id, usuario_id, tipo, categoria, titulo, descricao, carga_horaria, nome_arquivo, caminho_arquivo, data_upload, status) e UserToken (id, usuario_id, token, expires_at). Relacionamentos: Usuario 1..* Documento; Usuario 1..* UserToken. Saia com o código Mermaid.

Diagrama de Sequência

Gere um diagrama de sequência (UML) em Mermaid para o fluxo de envio de documento no sistema "[SISTEMA]": Aluno → Front-end (HTML/JS) → API (PHP) → Banco (MySQL). Fluxo: login com email/senha, API valida e retorna token, aluno envia PDF com tipo/categoria/carga horária, API valida arquivo e salva no banco, retorna sucesso. Saia com o código Mermaid.

Dica: cole o código Mermaid em mermaid.live para renderizar e exportar as imagens, e inclua-as no relatório (Word) e aqui na documentação.

8.Open source no GitHub

O código é liberado sob licença MIT. Estrutura do repositório:

siga-dainf/
├── app/            # aplicação (front + back)
├── docs/           # documentação (esta página, modelagem, relatórios)
├── README.md       # visão geral + como rodar
├── LICENSE         # MIT
└── .gitignore

Organização no GitHub: github.com/sigautfpr.

Repositório do código (todos os sistemas): github.com/sigautfpr/siga-dainf.

9.Como rodar localmente

# 1. Clonar o repositório
git clone https://github.com/sigautfpr/siga-dainf.git
cd siga-dainf

# 2. Subir o banco (Docker)
docker run -d --name dainf-db -e MARIADB_DATABASE=sistema_academico \
  -e MARIADB_USER=usuario -e MARIADB_PASSWORD='M@coli#0202' \
  -p 3306:3306 mariadb:10.11

# 3. Rodar o PHP embutido
php -S localhost:8000 -t app/

# 4. Acessar http://localhost:8000