3.9 KiB
EmboFlow
EmboFlow is a B/S embodied-data workflow platform for raw asset ingestion, delivery normalization, dataset transformation, workflow execution, preview, and export.
Bootstrap
From the repository root:
make bootstrap
This installs workspace dependencies and runs scripts/install_hooks.sh so local commit and push guardrails are active.
Local Commands
Run the full repository test suite:
make test
Run the strict repository guardrails:
make guardrails
Start package-level development entrypoints:
make dev-api
make dev-web
make dev-worker
Local Deployment
Start MongoDB and MinIO:
make infra-up
Start the API and web app in separate terminals:
make serve-api
make serve-web
make serve-worker
The default local stack uses:
- API:
http://127.0.0.1:3001 - Web:
http://127.0.0.1:3000 - Worker: Mongo polling loop with
WORKER_POLL_INTERVAL_MS=1000
Local Data Validation
The local validation path currently used for embodied data testing is:
/Users/longtaowu/workspace/emboldata/data
You can register that directory from the Assets page or via POST /api/assets/register.
The workflow editor currently requires selecting at least one registered asset before a run can be created.
The editor now also persists per-node runtime config in workflow versions, including executor overrides, optional artifact title overrides, and Python code-hook source for inspect and transform style nodes.
The runtime web shell now exposes a visible 中文 / English language toggle. The core workspace shell and workflow authoring surface are translated through a lightweight i18n layer.
The workflow editor center panel now uses a real draggable node canvas with zoom, pan, mini-map, dotted background, handle-based edge creation, and persisted node positions instead of a static list of node cards.
The Runs workspace now shows project-scoped run history, run-level aggregated summaries, cancel/retry controls, and run detail views with persisted task summaries, stdout/stderr sections, result previews, and artifact links into Explore.
Selected run tasks now expose the frozen node definition id, executor config snapshot, and code-hook metadata that were captured when the run was created.
When a node uses executorType=docker and provides executorConfig.image, the worker now runs a real local Docker container with mounted input.json / output.json exchange files. If no image is configured, the executor falls back to the lightweight simulated behavior used by older demo tasks.
When a node uses the built-in Python path without a custom hook, source-asset now emits bound asset metadata from Mongo-backed asset records and validate-structure now performs a real directory validation pass against local source paths. On the current sample path /Users/longtaowu/workspace/emboldata/data, that validation reports valid=false, videoFileCount=407, and missing delivery files because the sample root is a mixed dataset collection rather than a delivery package.
Repository Structure
apps/apicontains the control-plane modules for workspaces, assets, workflows, runs, and artifacts.apps/webcontains the React shell, asset workspace, workflow editor surface, run detail view, and explore renderers.apps/workercontains the Mongo-backed worker runtime, task runner, and executor contracts.design/contains the architecture and product design documents that must stay aligned with implementation.docs/contains workflow guidance and the executable implementation plan.
Developer Workflow
- Read the relevant design files under
design/before editing code. - Implement code and update impacted docs in the same change set.
- Use English-only commit messages with a gitmoji prefix.
- Run
make testandmake guardrailsbefore pushing changes.
For direct hook installation or reinstallation:
bash scripts/install_hooks.sh