How adrianhajdin/ghost-ai works
Ghost Arc is a collaborative system-design application: teams create and share projects, ask an AI agent to build an architecture diagram on a multiplayer canvas, refine it together, then generate and download Markdown specifications. The graph distinguishes project management, canvas collaboration, and the two AI stages. The README documents several capabilities whose detailed UI wiring was not sampled; those branches are shown only where the routes and documented runtime support them.
Main entry points: prisma.ts Prisma access · project-access.ts Project access checks · canvas-editor.tsx Canvas editor · route.ts Design task API
Components 27
Team workspace
- Workspace UI
app/editor/page.tsx - Canvas editor
components/editor/canvas/canvas-editor.tsx - Project home
components/editor/editor-home-client.tsx - AI sidebar
components/editor/ai-sidebar.tsx - Starter templates
components/editor/starter-templates.ts - Share dialog
components/editor/project-share-dialog.tsx
Project services
- Project API
app/api/projects/route.ts - Project management API
app/api/projects/[projectId]/route.ts - Collaborator API
app/api/projects/[projectId]/collaborators/route.ts - Project access checks
lib/project-access.ts
AI workflows
- Design task API
app/api/ai/design/route.ts - Architecture agent
trigger/design-agent.ts - Spec task API
app/api/ai/spec/route.ts - Spec generator
trigger/generate-spec.ts - Spec listing API
app/api/projects/[projectId]/specs/route.ts - Spec download API
app/api/projects/[projectId]/specs/[specId]/route.ts - Trigger.dev
- Google Gemini
Realtime canvas
- Canvas save API
app/api/projects/[projectId]/canvas/route.ts - Room authorization
app/api/liveblocks-auth/route.ts - Liveblocks
lib/liveblocks.ts
Persistence
- Prisma access
lib/prisma.ts - PostgreSQL
- Canvas and spec files
Other components
- Team member
- Clerk identity
- Liveblocks service
Connections 45
- Team member → Workspace UI: opens
- Team member → Project home: manages projects
- Project home → Project API: creates and lists
- Project API → Prisma access: queries projects
- Project management API → Prisma access: updates projects
- Prisma access → PostgreSQL: reads and writes
- Team member → Share dialog: shares project
- Share dialog → Collaborator API: manages access
- Collaborator API → Prisma access: stores collaborators
- Collaborator API → Project access checks: checks identity
- Workspace UI → Canvas editor: opens canvas
- Canvas editor → Room authorization: requests room token
- Room authorization → Project access checks: checks project access
- Room authorization → Liveblocks: authorizes session
- Liveblocks → Liveblocks service: issues room access
- Canvas editor → Liveblocks service: syncs canvas and presence
- Canvas editor → Canvas save API: loads and saves canvas
- Canvas save API → Project access checks: checks project access
- Canvas save API → Canvas and spec files: reads and writes canvas
- Canvas save API → Prisma access: stores blob reference
- AI sidebar → Design task API: submits prompt
- Design task API → Trigger.dev: starts design task
- Design task API → Prisma access: records task run
- Architecture agent → Google Gemini: generates diagram
- Architecture agent → Liveblocks service: updates shared canvas
- AI sidebar → Spec task API: requests specification
- Spec task API → Project access checks: checks project access
- Spec task API → Trigger.dev: starts spec task
- Spec task API → Prisma access: records task run
- Spec generator → Google Gemini: generates Markdown
- Spec generator → Prisma access: stores spec metadata
- Spec generator → Canvas and spec files: stores spec content
- Team member → Spec listing API: views specifications
- Spec listing API → Project access checks: checks project access
- Spec listing API → Prisma access: lists specifications
- Team member → Spec download API: downloads specification
- Spec download API → Project access checks: checks project access
- Spec download API → Prisma access: finds spec metadata
- Spec download API → Canvas and spec files: reads Markdown
- Team member → Clerk identity: authenticates
- Project API → Clerk identity: checks identity
- Project management API → Clerk identity: checks identity
- Design task API → Clerk identity: checks identity
- Room authorization → Clerk identity: checks identity
- Starter templates → Project home: offers templates