# Project Service

**Last Updated:** 2025-01
**Confidence:** High

## Summary

The ProjectService orchestrates all project-related operations: listing, getting, and executing commands. It coordinates between handlers, the Kubernetes adapter, audit logging, and webhook dispatch.

**Key Facts:**
- Lists projects from Kubernetes pods with label `rdev.orchard9.ai/project=true`
- Executes Claude, shell, and git commands asynchronously
- Logs all command executions to audit trail
- Dispatches webhook events on command completion
- Returns stream URLs for SSE-based output consumption

**File Pointers:**
- Service: `internal/service/project.go`
- Handler: `internal/handlers/projects.go`
- Port interfaces: `internal/port/project.go`

## Operations

| Method | Description |
|--------|-------------|
| `List(ctx)` | Returns all projects with current status |
| `Get(ctx, id)` | Returns single project by ID |
| `ExecuteClaude(ctx, project, prompt)` | Queues Claude command |
| `ExecuteShell(ctx, project, cmd)` | Queues shell command |
| `ExecuteGit(ctx, project, args)` | Queues git command |

## Execution Flow

1. Handler receives request
2. Service validates and creates Command
3. Command queued (postgres) or executed directly
4. Output streamed to StreamPublisher
5. Audit log entry created
6. Webhook events dispatched

## Related Topics

- [Command Execution](../features/command-execution.md)
- [SSE Streaming](../features/sse-streaming.md)
