1.9 KiB
1.9 KiB
Project Memory: @serve.zone/spark
Project Overview
- Purpose: Cluster node server system manager used by @serve.zone/cloudly
- Runtime: Deno 2.x - this is a Deno-based project, NOT Node.js
- Configuration: Uses
deno.jsonfor dependencies and tasks - Main entry:
mod.tsfor CLI, exports fromts/index.ts
Architecture
- SparkConfig: Key-value store for configuration (
npmextra.KeyValueStore) - SparkTaskManager: Cron-based task scheduling (
taskbuffer.TaskManager) - SparkServicesManager: Docker service management via
@apiclient.xyz/docker - SmartDaemon: Systemd integration for daemon mode
Key Dependencies (Updated Feb 2026)
@apiclient.xyz/docker@^5.1.0- Docker API (Facade pattern with DockerHost as entry point)@serve.zone/api@^5.3.0- Serve.zone API client@serve.zone/interfaces@^5.3.0- Type definitions@push.rocks/taskbuffer@^3.0.10- Task scheduling@push.rocks/smartdaemon@^2.1.0- Systemd service management@push.rocks/smartcli@^4.0.20- CLI framework
Docker API Notes (v5.x)
The @apiclient.xyz/docker package uses a Facade pattern. All operations go through DockerHost:
dockerHost.getServiceByName(name)- Get service by namedockerHost.getSecretByName(name)- Get secret by namedockerHost.createImageFromRegistry({ imageUrl })- Pull imagedockerHost.createSecret({ name, contentArg, version, labels })- Create secretdockerHost.createService({ name, image, networks, secrets, ports, ... })- Create servicedockerHost.activateSwarm()- Initialize swarm mode
Testing
- Tests use Deno's built-in test runner (
deno task test) - Test files in
test/directory - The first test disables resource/ops sanitization due to signal listeners from smartdaemon
Build
- No build step needed for the TypeScript code
- Binary compilation:
deno task compile:allorbash scripts/compile-all.sh - npm package uses postinstall script to download pre-compiled binaries