ScriptHive é uma plataforma de execução e gestão de scripts, projetada para automatizar transformações de dados de forma segura e escalável. O sistema permite armazenar scripts em JavaScript, executá-los de maneira assíncrona, acompanhar suas execuções e persistir os resultados em um banco de dados.
- .NET 9
- Entity Framework Core
- PostgreSQL (Docker)
- Swagger UI
- JWT Authentication
- Arquitetura DDD (Domain-Driven Design)
- API REST
- Docker + Docker Compose
/auth– Login, geração de token - Public/users– Gerenciar users (CRUD) - Admin only/scripts– Gerenciar scripts (CRUD) - Admin and User/executions– Executar scripts e acompanhar status/resultados - Admin and User
script-hive/
│
├── src/
│ ├── ScriptHive.Api # Camada de apresentação com endpoints REST, injeção de dependências e autenticação JWT
│ ├── ScriptHive.Application # Contém casos de uso, DTOs, validações e interfaces de serviços.
│ ├── ScriptHive.Domain # Contém entidades, value objects e interfaces de repositórios e filas.
│ ├── ScriptHive.Infrastructure # Contém implementações de repositórios, contexto EF e implementação da fila em memória.
│ ├── ScriptHive.Worker # Worker que atua em background para persistir os resultados dos scripts executados.
│ └── ScriptHive.ScriptExecutor # Execução de scripts .js com Jint
├── tests
│ └── ScriptHive.Tests # Testes unitários
├── docker-compose.yml # Orquestração dos containers
└── README.md # Este arquivo
- Baseada em JWT
- Login no endpoint
/auth/login - Autorização via
[Authorize]nos endpoints protegidos
- Docker Desktop instalado e rodando
- Git Bash (ou terminal compatível com Unix-like shell no Windows)
git clone git@github.com:AugustoRengel/script-hive.git
cd script-hivedocker compose up --buildEste comando irá:
- Construir a imagem da API
- Criar o banco
script_hive(PostgreSQL) - Aplicar as migrations
- Popular a tabela User um um Admin
- Aguardar o banco estar pronto e conectar a API
- Iniciar a API na porta
http://localhost:5351
Após os containers subirem, acesse:
http://localhost:5351/swagger
- Na UI Swagger acesse GET
/auth/login - Use as credenciais geradas pelo seed:
{
"username": "Admin",
"password": "admin@123"
}- Copie o token JWT retornado
- No Swagger, clique em Authorize e cole o token (sem
Bearer)
A partir desse ponto é possivel consumir o recurso que desejar do sistema, vamos ver um exemplo de uso:
-
Utilize os arquivos da pasta
docs/example-data/nos proximos passos: -
Acesse POST
/scriptse cadastre um script inserido o titulo e os arquivos baixados
- Execute e confirme que obteve retorno 201 com o
iddo script cadastrado - Acesse POST
/executions/{id} - Insira o
idsalvo e o arquivo de input salvo - Execute e confirme que obteve o retorno 202 com o
idda execução - Acesse GET
/executions/{id} - Execute e confirme que o retorno contem o
resultestatusa seguir:
{
"id": "072f670c-4432-45be-a0cc-7ccc12d097e4",
"result": [
{
"trimestre": "20232",
"nomeBandeira": "VISA",
"qtdCartoesEmitidos": 3050384,
"qtdCartoesAtivos": 1716709,
"qtdTransacoesNacionais": 43984902,
"valorTransacoesNacionais": 12846611557.78
}
],
"status": "Completed",
"startedAt": "2025-08-21T12:44:04.76238Z",
"finishedAt": "2025-08-21T12:44:04.782299Z"
}docker-compose down --volumesEsse comando remove os containers e o volume do banco, permitindo um ambiente novo ao rodar up novamente.
Os testes unitários podem ser executados com:
dotnet test .\ScriptHive.slnRequer .NET SDK 9 localmente instalado.
