Repository boundaries
Keep the existing Next.js application in a separate UI repository, with Rust runtime contracts defined in the platform repository.
| Repository | Contents | Current status |
|---|---|---|
aidj-docs | This Docusaurus knowledge base, ADRs, RFCs, and delivery plans | Present |
aidj-platform | Rust engine, adapters, and CLI workspace | Scaffolded in the organization |
aidj-ui | Next.js/React platform UI using the daemon API | Scaffolded from the supplied framework |
Retain the existing documentation tooling. Moving to mdBook would be a separate tooling decision; it is not needed to establish the platform architecture.
Target software layout
aidj-platform/
Cargo.toml
rust-toolchain.toml
crates/
dj-domain/
booth-engine/
virtual-booth/
audio-engine/
actors/
b2b-orchestrator/
sessions/
evaluation/
booth-api/
midi/
prodj-link/
rekordbox/
hardware-xdj-az/
hardware-cdj3000/
hardware-cdj3000x/
hardware-djma9/
apps/
boothd/
booth-cli/
booth-desktop/ # optional, later
tools/
midi-monitor/
prodj-sniffer/
packet-replay/
fixture-generator/
fixtures/
audio/
midi/
prodj-link/
rekordbox/
sessions/
tests/
integration/
simulator/
hardware/
The workspace includes compilable, explicitly empty boundaries for later milestones. Only the current milestone crates implement behavior. The first slice needs dj-domain, booth-engine, virtual-booth, booth-api, boothd, and the separate aidj-ui; hardware crate stubs explicitly claim no capabilities.
Dependency direction points toward dj-domain. The engine consumes domain types. Adapters implement engine-facing ports. boothd assembles the runtime. booth-api calls the engine; the UI consumes versioned API types and never links to hardware transports.
Use Rust for the headless runtime, Axum/Tokio for service I/O, and Next.js/React/TypeScript for the UI. Generate TypeScript contracts from a single schema source once the wire format stabilizes. Keep DSP execution outside the asynchronous I/O executor.
The Rust and UI repos own their executable tests and API contract conformance. This repo owns intent, evidence, decisions, and integration guidance.
Repository and package ownership
All three are independent private repositories under prochain-aidj, not GitHub forks. Workspace packages use prochain- names and disable registry publishing. crates.io ownership and name reservation have not been established. Upstream code, if adapted later, requires pinned provenance and retained licenses/notices.