package store // Project represents a deployable application. type Project struct { ID string `json:"id"` Name string `json:"name"` Registry string `json:"registry"` Image string `json:"image"` Port int `json:"port"` Healthcheck string `json:"healthcheck"` Env string `json:"env"` // JSON-encoded map Volumes string `json:"volumes"` // JSON-encoded map CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } // Stage represents a deployment stage within a project (e.g. dev, rel, prod). type Stage struct { ID string `json:"id"` ProjectID string `json:"project_id"` Name string `json:"name"` TagPattern string `json:"tag_pattern"` AutoDeploy bool `json:"auto_deploy"` MaxInstances int `json:"max_instances"` Confirm bool `json:"confirm"` PromoteFrom string `json:"promote_from"` Subdomain string `json:"subdomain"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } // Registry represents a container image registry. type Registry struct { ID string `json:"id"` Name string `json:"name"` URL string `json:"url"` Type string `json:"type"` Token string `json:"token"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } // Settings holds global application configuration (single-row pattern). type Settings struct { Domain string `json:"domain"` ServerIP string `json:"server_ip"` Network string `json:"network"` SubdomainPattern string `json:"subdomain_pattern"` NotificationURL string `json:"notification_url"` NpmURL string `json:"npm_url"` NpmEmail string `json:"npm_email"` NpmPassword string `json:"npm_password"` WebhookSecret string `json:"webhook_secret"` PollingInterval string `json:"polling_interval"` UpdatedAt string `json:"updated_at"` } // Instance represents a running (or stopped) container for a project stage. type Instance struct { ID string `json:"id"` StageID string `json:"stage_id"` ProjectID string `json:"project_id"` ContainerID string `json:"container_id"` ImageTag string `json:"image_tag"` Subdomain string `json:"subdomain"` NpmProxyID int `json:"npm_proxy_id"` Status string `json:"status"` // running, stopped, failed, removing Port int `json:"port"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } // Deploy represents a deployment attempt. type Deploy struct { ID string `json:"id"` ProjectID string `json:"project_id"` StageID string `json:"stage_id"` InstanceID string `json:"instance_id"` ImageTag string `json:"image_tag"` Status string `json:"status"` // pending, pulling, starting, configuring_proxy, health_checking, success, failed, rolled_back StartedAt string `json:"started_at"` FinishedAt string `json:"finished_at"` Error string `json:"error"` } // DeployLog is a single log entry for a deploy. type DeployLog struct { ID int64 `json:"id"` DeployID string `json:"deploy_id"` Message string `json:"message"` Level string `json:"level"` // info, warn, error CreatedAt string `json:"created_at"` }