Technology Stack
Analysis Date: 2026-05-05
Languages
Primary:
- JSON β Frame data files (frames/*.crumbframe.json), schema (schema/crumbframe.v1.json), partner DB (partners/partners.json), agent results (.doktor_results.json)
- Bash β Agent check runner and validation orchestrator (scripts/doktor.sh)
- JavaScript (ES Modules) β Web renderer (web/renderer/exploded2d.js, web/renderer/connections.js, inline in web/index.html)
Secondary:
- Python 3 β JSON Schema validation via jsonschema library, invoked inline inside scripts/doktor.sh (heredoc subprocess)
- CSS (CSS Variables) β Styling for web renderer (web/style.css)
- HTML5 β Web renderer entry point (web/index.html)
Runtime
Environment:
- No server runtime. Data layer is pure JSON files on filesystem. Web renderer runs in browser (no build step).
- Bash scripts run on macOS/Linux shell directly.
Package Manager:
- None β no package.json, no lockfile. Zero Node.js dependency chain.
- Python dependency: jsonschema (pip). Must be installed manually: pip install jsonschema --break-system-packages
Frameworks
Core:
- None β intentionally zero-framework. Custom ES Module classes only.
Testing / Validation:
- jsonschema (Python 3, pip) β JSON Schema draft-07 validator used by doktor.sh
- jq (CLI tool, Homebrew) β JSON parsing and field extraction throughout doktor.sh
Build/Dev:
- None β no build pipeline, no bundler, no transpiler. Browser loads ES Modules natively.
Key Dependencies
Critical (must be installed on host):
- jq β required by doktor.sh for all JSON operations. Missing = full abort. Install: brew install jq
- python3 + jsonschema β required for schema validation step [5] in doktor.sh. Missing = step skipped with warning.
- curl β required by agent checks of type github_release and http_check for live API calls.
External APIs (runtime, not installed):
- GitHub API (api.github.com) β queried by betaflight_release and elrs_release agent checks
- RC Hangar 15 shop (shop.rc-hangar15.de) β queried by product_availability agent check
Configuration
Environment:
- No .env file or environment variables required for core operation.
- All configuration is embedded in frame JSON files and partners/partners.json.
- Agent check results written to .doktor_results.json in project root (gitignored or committed alongside frames).
Build:
- None. web/index.html fetches ../frames/whoop_1s_65mm.crumbframe.json via relative path β requires being served from a local web server or the browser must allow file:// cross-origin fetches.
Platform Requirements
Development:
- macOS or Linux (Bash set -euo pipefail)
- jq installed
- python3 with jsonschema pip package installed
- curl available (standard on macOS/Linux)
- Modern browser with ES Module support for the web renderer
Production:
- Static file hosting sufficient β no server-side processing
- Schema publicly hosted at: https://crumbair.crumbforest.io/schema/crumbframe.v1.json
- No database, no server, no auth system
Stack analysis: 2026-05-05