# PiCloud dev Caddyfile.
#
# Same routing shape as prod, with two differences:
#   - bound to plain HTTP (no domain, no automatic TLS)
#   - upstreams are the docker-compose service names
#
# Control plane (`/api/admin/*`) and data plane (`/api/execute/*`, `/exec/*`)
# both terminate on the `picloud` all-in-one for now; in cluster mode the
# data-plane handles will list multiple orchestrator upstreams here while
# the admin handle still points at a single manager.

{
	auto_https off
	admin off
	log {
		output stdout
		format console
	}
}

:80 {
	# Health probes go straight to the orchestrator.
	handle /healthz {
		reverse_proxy picloud:8080
	}

	# Control plane → manager (single-process: picloud).
	handle /api/admin/* {
		reverse_proxy picloud:8080
	}

	# Data plane → orchestrator (single-process: picloud).
	handle /api/execute/* {
		reverse_proxy picloud:8080
	}
	handle /exec/* {
		reverse_proxy picloud:8080
	}

	# Everything else → dashboard SPA (Caddy serves a self-contained
	# dashboard container that already runs file_server with index.html
	# fallback for client-side routing).
	handle {
		reverse_proxy dashboard:80
	}

	log {
		output stdout
		format console
	}
}
