Architecture
CLICD consists of a Go backend, a React frontend, and host virtualization capabilities.
Backend
The backend entry point is backend/main.go, and HTTP routes are centralized in backend/internal/server/server.go. Main modules:
internal/api: HTTP APIs for the web panel and/api/v1.internal/config: configuration and SQLite storage.internal/lxc: LXC container management.internal/kvm: KVM/libvirt virtual machine management.internal/cli: command-line management entry point.internal/server: embedded frontend assets and HTTP service.internal/version: version number.
Frontend
The frontend entry point is frontend/src/main.tsx. Pages live in frontend/src/pages, and shared components live in frontend/src/components.
Main pages:
- Dashboard:
Dashboard.tsx - Container list:
Containers.tsx - Container details:
ContainerDetail.tsx - Image Management:
ImageManagement.tsx - Security Alerts:
Security.tsx - Snapshot Management:
Snapshots.tsx - Routing Management:
Routing.tsx - API Integration:
ApiIntegration.tsx - Host Report:
HostReport.tsx - Sub-user Management:
SubUserManagement.tsx
Frontend Embedding
For production builds, frontend artifacts are placed in backend/internal/server/web. The backend serves them through Go embed and returns the SPA entry for non-API routes.
API Layers
/api/*: web panel and compatibility APIs./api/v1/*: versioned APIs recommended for external automation.- WebSSH and WebVNC use short-lived tickets before opening WebSocket connections.