API REST para gerenciamento de Trabalhos de Conclusão de Curso (TCCs) da UFFS.
Sistema backend para controle e gestão de TCCs, incluindo gerenciamento de orientações, bancas examinadoras, defesas, convites, disponibilidades e declarações. A aplicação oferece suporte completo ao fluxo de trabalho de TCCs, desde a proposta inicial até a defesa final.
- Node.js
- Express.js
- PostgreSQL
- Sequelize ORM
- Passport JWT (autenticação)
- Helmet (segurança)
- Morgan (logs)
- Multer (upload de arquivos)
- Node.js (versão 14 ou superior)
- PostgreSQL
- Yarn ou npm
yarn installou
npm install- Configure as variáveis de ambiente criando um arquivo
.envna raiz do projeto:
SERVERPORT=porta_servidor
DBHOST=endereco_postgres
DBPORT=porta_postgres
DBNAME=nome_banco
DBUSER=usuario_banco
DBPASS=sua_senha
JWT_SECRET=sua_chave_secreta- Busque o script SQL para criar a estrutura do banco de dados utilizando a extensão ERD Editor em database.erd.json e execute no banco de dados.
Para iniciar o servidor:
nodemon src/server.jsO servidor estará disponível em http://localhost:3010
src/
├── config/ # Configurações de conexão
├── controllers/ # Controladores das rotas
├── middleware/ # Middleware de autenticação e autorização
├── models/ # Modelos Sequelize
├── repository/ # Camada de acesso a dados
├── services/ # Lógica de negócio
├── enums/ # Enumerações e constantes
├── public/ # Arquivos estáticos
└── server.js # Arquivo principal do servidor
POST /api/auth/login- Login de usuárioPOST /api/auth/refresh- Renovar token
GET /api/docentes- Listar docentesPOST /api/docentes- Criar docentePUT /api/docentes/:id- Atualizar docenteDELETE /api/docentes/:id- Remover docente
GET /api/dicentes- Listar dicentesPOST /api/dicentes- Criar dicentePUT /api/dicentes/:id- Atualizar dicenteDELETE /api/dicentes/:id- Remover dicente
GET /api/orientacoes- Listar orientaçõesPOST /api/orientacoes- Criar orientaçãoPUT /api/orientacoes/:id- Atualizar orientaçãoDELETE /api/orientacoes/:id- Remover orientação
GET /api/defesas- Listar defesasPOST /api/defesas- Agendar defesaPUT /api/defesas/:id- Atualizar defesaDELETE /api/defesas/:id- Cancelar defesa
GET /api/convites- Listar convitesPOST /api/convites- Criar convitePUT /api/convites/:id- Atualizar conviteDELETE /api/convites/:id- Remover convite
GET /api/disponibilidade-banca- Listar disponibilidadesPOST /api/disponibilidade-banca- Registrar disponibilidadePUT /api/disponibilidade-banca/:id- Atualizar disponibilidadeDELETE /api/disponibilidade-banca/:id- Remover disponibilidade
GET /api/dashboard/estatisticas- Obter estatísticas gerais
GET /api/declaracoes- Gerar declarações
A API utiliza autenticação JWT (JSON Web Token) via Passport. Para acessar endpoints protegidos, inclua o token no header da requisição:
Authorization: Bearer seu_token_jwt
O sistema implementa controle de permissões baseado em grupos e categorias. Verifique o código em src/middleware/ para mais detalhes.
MIT
Giancarlo Salton - [email protected]