NetCenter é uma aplicação web desenvolvida como projeto acadêmico para atuar como um hub centralizador de ferramentas de diagnóstico de redes. O objetivo principal do projeto é aplicar conceitos modernos de desenvolvimento full-stack, incluindo estruturação de APIs robustas em Express, persistência relacional com Prisma ORM e SQLite, autenticação JWT segura, e manipulação dinâmica de DOM no front-end.
Este projeto foi estruturado para atender plenamente a todos os critérios acadêmicos exigidos:
400 Bad Request) para dados ausentes e sanitização via Regex contra injeções de shell scripts no servidor.err, req, res, next), garantindo respostas JSON limpas em todos os fluxos.try/catch).localStorage do cliente e envio sob o cabeçalho Authorization: Bearer <token>.User, Report e Ferramenta) com relacionamento 1 ↔ N entre usuários e relatórios./prisma/migrations/.prisma migrate deploy embutido no arquivo principal do servidor, garantindo que o banco seja configurado no startup./api/run-tool completamente protegida, exigindo login para efetuar qualquer chamada aos binários do SO..env para expor segredos (JWT_SECRET), caminho do banco (DATABASE_URL) e porta do servidor (PORT). O arquivo .env está no .gitignore..env.example com template das variáveis necessárias.child_process.spawn, adaptando a chamada e os parâmetros com base na identificação do sistema operacional (Windows vs Unix-like).netcenter/
├── api/ # Consumo da API no front-end
│ ├── index.js # Chamada de ferramentas pública
│ └── auth.js # Chamadas autenticadas (auth, run-tool, reports)
├── prisma/ # Banco de dados e ORM
│ ├── schema.prisma # Modelagem das entidades relativas ao banco
│ ├── seed.js # Script de população do banco
│ └── migrations/ # Histórico de migrations SQL versionadas
├── server/ # Backend Node/Express
│ ├── db.js # Inicialização de diretórios e seeding das ferramentas
│ ├── controllers/ # Controladores responsáveis pelas requisições
│ ├── middlewares/ # Middlewares de Auth e Error handling
│ ├── models/ # Queries ao banco via Prisma Client
│ ├── routes/ # Definição dos endpoints REST
│ └── utils/ # Funções auxiliares (criação e validação JWT)
├── .env.example # Modelo de exemplo de variáveis de ambiente
├── index.html # Tela inicial com motor de busca
├── login.html # Tela de Login
├── register.html # Tela de Cadastro
├── tools.html # Painel do terminal com Auth Guard
├── reports.html # Tela de visualização de relatórios do usuário
├── main.js # JS da tela principal (DOM e autenticação)
├── server.js # Servidor Express principal
└── package.json # Scripts de inicialização, migrations e dependências
A API agora conta com uma documentação básica em OpenAPI disponível em docs/openapi.yaml.
Também foram incluídos artefatos de organização para desenvolvimento assistido por IA em AGENTS.md e na pasta specs.
Execute os testes com:
npm test
Para rodar a aplicação localmente, siga os passos abaixo:
npm install
.env.example e crie um arquivo .env na raiz do projeto:
cp .env.example .env
Ajuste as chaves conforme necessário (um JWT_SECRET forte é recomendado).
npm start
http://localhost:3000 no seu navegador..env a partir de .env.example:
cp .env.example .env
docker compose up --build
http://localhost:3000.O container expõe a porta
3000e carrega as variáveis de ambiente do arquivo.env.