Examples
Fullstack Node and Go repos with a split service path
A split frontend/backend contract that keeps both sides honest.
copynew usersbasicstable2026-05-30
Recommended next
Typical signals
- Node app plus Go service
- build and service-test remain separate
- runtime checks keep both sides honest
Why it matters
- it turns a repo pattern into something humans, CI, and agents can read the same way
- it makes the next command obvious instead of implied by README drift
- it keeps readiness, setup, and execution explainable in receipts and diagnostics
Example contract
This example keeps the frontend and backend visible in the contract so a change in one path cannot silently hide the other.
ota.yamlyaml
version: 1metadata: ota: minimum_version: "1.6.26"project: name: fullstack-node-go description: Example contract for a Node application with a Go service type: applicationexecution: default_context: host contexts: host: backend: nativetoolchains: node: version: "22" fulfillment: source: corepack mode: run go: version: "1.24"tools: npm: 10.8.2env: vars: OTA_SERVICE_ENV: default: local allowed: - local - citasks: setup: internal: true description: Install application dependencies category: setup prepare: kind: dependency_hydration medium: package_dependencies source: kind: node_package_manager cwd: . manager: npm mode: install requirements: toolchains: - node effects: writes: - node_modules network: true network_kind: dependency_hydration build: description: Build the app bundle category: build command: exe: npm args: - run - build depends_on: - setup service-test: description: Run the Go service tests category: test command: exe: go args: - test - ./...checks: - name: repo-config-valid kind: precondition severity: error run: ./scripts/validate-config.shagent: entrypoint: setup default_task: service-test safe_tasks: - setup - service-test verify_after_changes: - service-test writable_paths: - src - services - docs - node_modules protected_paths: - ota.yaml notes: | Use `ota run service-test` after application changes. Use `ota run build` and `ota run test` to keep the Node and Go paths in sync through the contract.