
Resumo do projeto

- Tipo: Backend Node.js (Express) com frontend estático.
- Local: código principal em `TCC-master`, entrypoint `index.js`. Arquivos estáticos em `TCC-master/static/`.
- Descrição curta: API REST para um sistema de organizações, usuários, vagas, candidaturas e cursos; frontend estático consome a API. Autenticação via cookie JWT e persistência com Sequelize (MySQL).
- Dependências principais: `express`, `sequelize`, `mysql2`, `bcryptjs`, `cookie-parser`, `jsonwebtoken`, `nodemailer`, `lodash` (ver `TCC-master/package.json`).

Pontos técnicos importantes

- Banco de dados: usa Sequelize com MySQL. Variáveis de ambiente usadas: `DB_NAME`, `DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASS`, `DB_DIALECT`.
- Seed / Atenção: `TCC-master/models.js` executa `dropAllTables()` antes de `sync()` e cria dados de exemplo — isso apaga tabelas existentes. Não rode em produção sem remover esse `dropAllTables()`.
- Upload e arquivos estáticos: endpoints escrevem em `static/pfp`, `static/files`, `static/videos`, `static/banners` — garanta que estas pastas existam e que o processo Node tenha permissão de escrita.
- Cookies/JWT: cookie `session` assinado com `process.env.JWT_SHARED_SECRET`. `SESSION_DOMAIN` é usado no cookie — ajustar para testes locais.
- Porta: por padrão escuta `process.env.PORT || 80`. Em desenvolvimento use `PORT=3000` para evitar privilégios de administrador.

Credenciais criadas automaticamente (seed)

- Usuário admin: email `admin@e.com` senha `ee`
- Usuário demo: email `user@email.com` senha `ee`

Como rodar localmente (PowerShell no Windows)

1. Instale Node.js (recomendado >= 18).
2. Abra o projeto e instale dependências:
```powershell
cd 'C:\Users\luigg\Downloads\TCC\TCC-master'
npm install
```

3. Defina variáveis de ambiente e rode (exemplo mínimo):
```powershell
$env:DB_NAME='r1'
$env:DB_HOST='localhost'
$env:DB_PORT='3306'
$env:DB_USER='root'
$env:DB_PASS=''
$env:DB_DIALECT='mysql'
$env:JWT_SHARED_SECRET='troque_para_algo_secreto'
$env:SESSION_DOMAIN='localhost'
$env:EMAIL_HOST='smtp.exemplo.com'   # opcional, para nodemailer
$env:EMAIL_PORT='587'
$env:EMAIL_USER='seu_usuario'
$env:EMAIL_PASS='sua_senha'
$env:PORT='3000'
node .\index.js
```

- Alternativa rápida (uma linha):
```powershell
$env:JWT_SHARED_SECRET='secret'; $env:DB_NAME='r1'; $env:DB_USER='root'; $env:DB_PASS=''; $env:PORT='3000'; node .\index.js
```

4. Abra `http://localhost:3000` (ou a porta definida). As páginas estáticas em `static/` são servidas automaticamente.

Avisos e recomendações

- Se não quiser que o banco seja zerado ao iniciar, comente/remova `await sequelize.getQueryInterface().dropAllTables();` em `TCC-master/models.js`.
- Crie/garanta permissões nas pastas: `static/pfp`, `static/files`, `static/videos`, `static/banners`.
- Para desenvolvimento use porta não privilegiada (ex.: 3000).
- A aplicação não usa `dotenv`; recomendo adicionar `dotenv` ou um `.env` se preferir carregar variáveis automaticamente.
- Teste o login com as credenciais seed e verifique a criação do cookie `session` no navegador.

Próximos passos que eu posso fazer

- Remover o `dropAllTables()` e mover o seed para um script `seed.js` separado.
- Criar `README.md` e um `.env.template`.
- Executar `npm install` e iniciar a aplicação aqui (se você autorizar execução de comandos).

Arquivo atualizado em: `c:\Users\luigg\Downloads\TCC\execucao.txt`

