41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# 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.json` for dependencies and tasks
|
|
- **Main entry**: `mod.ts` for CLI, exports from `ts/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 name
|
|
- `dockerHost.getSecretByName(name)` - Get secret by name
|
|
- `dockerHost.createImageFromRegistry({ imageUrl })` - Pull image
|
|
- `dockerHost.createSecret({ name, contentArg, version, labels })` - Create secret
|
|
- `dockerHost.createService({ name, image, networks, secrets, ports, ... })` - Create service
|
|
- `dockerHost.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:all` or `bash scripts/compile-all.sh`
|
|
- npm package uses postinstall script to download pre-compiled binaries
|