Files
spark/readme.hints.md

41 lines
1.9 KiB
Markdown
Raw Normal View History

# 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