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; forwardselite-event/edos-file-eventto entitled iframe slots. - Embed handshake: slot apps post
edac.shell.navigate,edac.shell.restartSlot, etc. — seedocs/COMPOSITION_CONTRACT.mdin the app repo. - Places query proxy: implements HOSTED_APP_CONTRACT.md —
edac.places.query→edos.places.queryon a mounted Universe Places slot →edos.places.queryResultback to the consumer slot. Wire detail also in appdocs/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; defaultVITE_DESKTOP_APP_URL→https://edac.howfe.org/. - Sibling allowlists: journal-consuming embeds (
edss,edca,edjev,edis,edep) must includehttps://edac.howfe.orgin IFM sender allowlists.