tr
TryGhost
GitHub
Ghost
Workspace
GitHub
CI Pipeline Executions
Current execution
Succeeded
slars/domain-api-surfaces
Runs and Agents
Timeline
Beta
Configuration
Self-Healing CI
Project Graph
Circular Dependencies
Enterprise
Resource Usage
Analysis
Conformance
Enterprise
Runs
Current run
Succeeded
Tasks
Resource Usage
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Added public api surfaces to the admin domains no ref The admin shell (routes.tsx), the layout, and several domains deep-imported other domains' internals, so every screen move risked breaking unrelated folders. Each domain (members, tags, comments, automations, posts, onboarding, whats-new, settings) now exposes an api.ts mirroring analytics/api.ts, and the shell, layout, and cross-domain consumers import only those surfaces. Route definitions the shell held inline (members children, the posts analytics subtree) moved into their domains; lazy entries stay dynamic imports inside the domains so route-level code-splitting is unchanged (production build emits an identical chunk inventory). Cross-domain strays were re-homed: buildMembersUrl, the member formatting helpers, and the shared-views parsing now flow through members/api.ts; the whats-new dialog, banner, and hooks through whats-new/api.ts; BrandIcon and its svg set moved from settings to src/shared/brand-icon; the AccessRule types moved to src/route-access.ts and NotFound to src/shared so domains no longer import shell files. Two dependency-cruiser rules keep it that way: domains may import a different domain only via its api.ts, and the shell and layout may import domains only via api.ts. Both rules were proven to fire on deliberate violations in the unresolved @/-specifier and resolved relative shapes, then the violations were reverted.
nx run ghost-monorepo:lint:boundaries
⌘K
Succeeded
nx run ghost-monorepo:lint:boundaries
Click to copy
Linux
4 CPU cores
6b6d1f60
30317
GitHub
Ghost
Workspace