Skip to content

elite-dangerous-app-composition

Audience: Agent

Purpose

EDAC — hosted web composition host (edac slug, https://edac.howfe.org): embeds other EDOS apps in iframes, owns shell navigation from shareable JSON config, receives journal data like any EDOS app, and fans out events to opted-in embeds.

Product intent and phases: proposal.md, PLAN.md in the app repo. Federated discovery: APP_DISCOVERY_REGISTRY.md.

Tech stack

Vite + Solid + TypeScript in src/. Distribution API sidecar: services/dist-api/ (Bun/Elysia-style service packaged for Docker as edac-dist-api).

Dependencies: @howfe/elite-dangerous-event-types, @howfe/inter-frame-messenger.

Run / build

cd elite-dangerous-app-composition
npm install
npm run dev          # SPA
npm run dev:api      # dist-api sidecar (local)
npm run build
npm test

Deploy

Item Value
Production host https://edac.howfe.org
Compose services edac (static SPA), edac-dist-api (/api/dist/*)
Maintainer registry https://edac.howfe.org/registry/edos-maintainer/v1/index.json

Ships public/.well-known/edos-integration.json.

Integration points

  • Journal fan-out: IFM on window; forwards elite-event / edos-file-event to entitled iframe slots.
  • Embed handshake: slot apps post edac.shell.navigate, edac.shell.restartSlot, etc. — see docs/COMPOSITION_CONTRACT.md in the app repo.
  • Places query proxy: implements HOSTED_APP_CONTRACT.mdedac.places.queryedos.places.query on a mounted Universe Places slot → edos.places.queryResult back to the consumer slot. Wire detail also in app docs/COMPOSITION_CONTRACT.md.
  • Registry catalog: federated link-only indexes per APP_DISCOVERY_REGISTRY.md.
  • Distribution mode: https://edac.howfe.org/dist/{id} — read-only overlay from dist-api.
  • Desktop install: build-service at https://app.edos.howfe.org; default VITE_DESKTOP_APP_URLhttps://edac.howfe.org/.
  • Sibling allowlists: journal-consuming embeds (edss, edca, edjev, edis, edep) must include https://edac.howfe.org in IFM sender allowlists.