Versions in this module Expand all Collapse all v0 v0.2.0 Sep 27, 2026 Changes in this version type AppDetailData + Hook app.Hook + HookSecret string + HookURL string + HookURLPublic bool + HooksOn bool + type ExtraRoutes struct + Admin func(r chi.Router) + Member func(r chi.Router) + Owner func(r chi.Router) + type Hooks interface + DeliverPush func(ctx context.Context, appID uuid.UUID, p app.Push) (string, error) + DisableGitHook func(ctx context.Context, ownerID, name string) error + EnableGitHook func(ctx context.Context, ownerID, name string) (string, error) + GitHook func(ctx context.Context, ownerID, name string) (app.Hook, error) type Options + Extra ExtraRoutes + Hooks Hooks type Server + func (s *Server) FlashErr(w http.ResponseWriter, r *http.Request, text string) + func (s *Server) FlashOK(w http.ResponseWriter, r *http.Request, text string) + func (s *Server) FlashWarn(w http.ResponseWriter, r *http.Request, text string) + func (s *Server) Render(w http.ResponseWriter, r *http.Request, page templ.Component) + func (s *Server) RenderStatus(w http.ResponseWriter, r *http.Request, status int, page templ.Component) v0.1.0 Sep 26, 2026 Changes in this version + const DefaultBrandName + const FlashCookie + const PageSize + const SessionCookie + func Account(d AccountData) templ.Component + func Activity(d ActivityData) templ.Component + func AddNode(d AddNodeData) templ.Component + func AddNodeNodes(d AddNodeData) templ.Component + func AppDeploymentsBody(d AppDetailData) templ.Component + func AppDetail(d AppDetailData) templ.Component + func AppList(apps []app.App) templ.Component + func AppLogLines(d LogsData) templ.Component + func AppLogs(d LogsData) templ.Component + func BranchOptions(d BranchData) templ.Component + func Canvas(d CanvasData) templ.Component + func CheckMail() templ.Component + func Cluster(d ClusterData) templ.Component + func CustomDomainList(d NetworkingData) templ.Component + func DeployLogPanel(d DeployLogsData) templ.Component + func DirectoryOptions(d DirectoryData) templ.Component + func Events(d EventsData) templ.Component + func FormatCPU(millis int64) string + func FormatMemory(mib int64) string + func Layout(s Slots, page templ.Component) templ.Component + func NewApp(d NewAppData) templ.Component + func NodeDetail(d NodeDetailData) templ.Component + func NodeDetailBody(d NodeDetailData) templ.Component + func Overview(d OverviewData) templ.Component + func PlatformDNS(d PlatformDNSData) templ.Component + func ProjectList(d ProjectListData) templ.Component + func RegistryPage(d RegistryData) templ.Component + func Settings(d SettingsData) templ.Component + func SignIn(d SignInData) templ.Component + func TeamPage(d TeamPageData) templ.Component + func TeamSwitcher(teams []TeamChoice) templ.Component + func TemplateList(d TemplateListData) templ.Component + func UserMenu(owner identity.Owner, canSignOut bool) templ.Component + func Volumes(d VolumesData) templ.Component + type AccountData struct + Email string + Error string + HasPassword bool + MinLength int + Name string + Notice string + RecentAuth bool + Role string + Since string + Team string + type Accounts interface + AcceptInvitation func(ctx context.Context, raw string, userID uuid.UUID) (string, account.Role, error) + AuthenticatePassword func(ctx context.Context, email, password string) (account.User, error) + BootstrapOwner func(ctx context.Context, teamID, teamName string, user account.User) error + ConsumeMagicLink func(ctx context.Context, raw string) (account.User, error) + CreateSession func(ctx context.Context, userID uuid.UUID, teamID, userAgent, ip string, ...) (string, error) + EnsureUser func(ctx context.Context, email, displayName string) (account.User, error) + HasPassword func(ctx context.Context, userID uuid.UUID) (bool, error) + InvitationFor func(ctx context.Context, raw string) (account.Invitation, error) + Invite func(ctx context.Context, actor uuid.UUID, teamID, email string, role account.Role, ...) (string, error) + IssueMagicLink func(ctx context.Context, email string, ttl time.Duration) (raw string, user account.User, existed bool, err error) + ListMembers func(ctx context.Context, teamID string) ([]account.Member, error) + ListPendingInvitations func(ctx context.Context, teamID string) ([]account.Invitation, error) + RemoveMember func(ctx context.Context, actor uuid.UUID, teamID string, target uuid.UUID) error + RemovePassword func(ctx context.Context, sessionID uuid.UUID, proof account.Proof) error + ResolveSession func(ctx context.Context, raw string) (account.Session, error) + RevokeAllSessions func(ctx context.Context, userID uuid.UUID) error + RevokeInvitation func(ctx context.Context, actor uuid.UUID, teamID string, id uuid.UUID) error + RevokeSession func(ctx context.Context, raw string) error + SetPassword func(ctx context.Context, sessionID uuid.UUID, password string, proof account.Proof) error + SetRole func(ctx context.Context, actor uuid.UUID, teamID string, target uuid.UUID, ...) error + SwitchTeam func(ctx context.Context, sessionID uuid.UUID, teamID string) error + TeamsFor func(ctx context.Context, userID uuid.UUID) ([]account.Membership, error) + User func(ctx context.Context, userID uuid.UUID) (account.User, error) + type ActivityData struct + Items []app.Activity + type AddNodeData struct + ClusterOK bool + Command string + Configured bool + Error string + Nodes []orchestrator.NodeInfo + Pool string + Settings cluster.Settings + func (d AddNodeData) IsNew(n orchestrator.NodeInfo) bool + type AppDetailData struct + App app.App + BaseURL string + CPULimit ResourceSlider + CPURequest ResourceSlider + Deployments []app.Deployment + Error string + MemoryLimit ResourceSlider + MemoryRequest ResourceSlider + Net app.Networking + Notice string + Pods []orchestrator.PodInfo + RepoError string + ResolverName string + Siblings []app.App + Tab string + type Apps interface + AttachVolume func(ctx context.Context, ownerID, appName string, in app.VolumeInput) (app.Volume, error) + Branches func(ctx context.Context, repoURL, query string) ([]string, error) + CancelLiveDeployment func(ctx context.Context, ownerID, name string) error + ClearPositions func(ctx context.Context, ownerID string, projectID uuid.UUID) error + Count func(ctx context.Context, ownerID string) (int64, error) + Create func(ctx context.Context, ownerID string, in app.CreateInput) (app.App, error) + CreateProject func(ctx context.Context, ownerID, name string) (app.Project, error) + Delete func(ctx context.Context, ownerID, name string) error + DeleteVariable func(ctx context.Context, ownerID, appName, key string) error + DeleteVolume func(ctx context.Context, ownerID, appName, volumeName string, detach bool) error + DeployActivity func(ctx context.Context, ownerID string, days int) (app.DeployActivity, error) + Deployments func(ctx context.Context, ownerID string, appID uuid.UUID, limit int32) ([]app.Deployment, error) + Directories func(ctx context.Context, repoURL, path string) ([]string, error) + Get func(ctx context.Context, ownerID, name string) (app.App, error) + Links func(ctx context.Context, ownerID string) ([]app.Link, error) + List func(ctx context.Context, ownerID string) ([]app.App, error) + ListInProject func(ctx context.Context, ownerID string, projectID uuid.UUID) ([]app.App, error) + Project func(ctx context.Context, ownerID, slug string) (app.Project, error) + ProjectByID func(ctx context.Context, ownerID string, id uuid.UUID) (app.Project, error) + Projects func(ctx context.Context, ownerID string) ([]app.Project, error) + RecentActivity func(ctx context.Context, ownerID string, limit int32) ([]app.Activity, error) + Redeploy func(ctx context.Context, ownerID, name string) error + ResizeVolume func(ctx context.Context, ownerID, appName, volumeName string, sizeBytes int64) error + Rollback func(ctx context.Context, ownerID, name string, releaseID uuid.UUID) error + Scale func(ctx context.Context, ownerID, name string, replicas int32) (app.App, error) + SetHealth func(ctx context.Context, ownerID, name, healthPath string, liveness bool) error + SetPosition func(ctx context.Context, ownerID, name string, x, y int32) error + SetVariable func(ctx context.Context, ownerID, appName string, in app.VariableInput) error + Update func(ctx context.Context, ownerID, name string, in app.UpdateInput) (app.App, error) + type BranchData struct + Branches []string + Error string + Searched bool + type CanvasData struct + Edges []CanvasEdge + Empty bool + Height int + Nodes []CanvasNode + Open *AppDetailData + Project app.Project + Projects []app.Project + Width int + type CanvasEdge struct + From string + Path string + To string + Via string + type CanvasNode struct + App app.App + Height int + Pinned bool + Volume *app.Volume + X int + Y int + type ClusterData struct + CanAddNode bool + CanManageNodes bool + Error string + Nodes []orchestrator.NodeInfo + OK bool + Pods []orchestrator.PodInfo + Summary orchestrator.ClusterSummary + Tab string + type Crumb struct + Href string + Label string + type DNSRecord struct + Name string + Type string + Value string + type DefaultSlots struct + func (DefaultSlots) Slots(ctx context.Context, r *http.Request) Slots + type DeployLogsData struct + App string + Build app.Build + Deploy app.DeployLogs + DeployID string + Error string + Find string + HTTP app.HTTPLogs + HTTPBuckets []app.HTTPBucket + HTTPPage Page + HasBuild bool + Method string + Methods []string + Pane bool + Previous bool + View string + type DirectoryData struct + Directories []string + Error string + Parent string + Path string + Searched bool + type EventsData struct + Error string + Events []orchestrator.EventInfo + OK bool + Page Page + Read int + type Flash struct + Kind FlashKind + Text string + func (f Flash) Assertive() bool + func (f Flash) Class() string + type FlashKind string + const FlashErr + const FlashOK + const FlashWarn + type Joiner interface + Command func(ctx context.Context, pool string) (string, error) + DNS func(ctx context.Context) (cluster.DNS, error) + SetDNS func(ctx context.Context, target, prefix string) error + SetJoin func(ctx context.Context, serverURL, token string, by uuid.UUID) error + Settings func(ctx context.Context) (cluster.Settings, error) + type Logger interface + BuildForDeployment func(ctx context.Context, ownerID string, deployID uuid.UUID) (app.Build, error) + Deployment func(ctx context.Context, ownerID, appName string, deployID uuid.UUID) (app.Deployment, error) + DeploymentHTTPLogs func(ctx context.Context, ownerID, appName string) (app.HTTPLogs, error) + DeploymentLogs func(ctx context.Context, ownerID, appName string, deployID uuid.UUID, ...) (app.DeployLogs, error) + LogStream func(ctx context.Context, ownerID, appName string, req app.LogRequest) (iter.Seq2[orchestrator.LogLine, error], error) + Logs func(ctx context.Context, ownerID, appName string, req app.LogRequest) (app.Logs, error) + type LogsData struct + App string + Error string + Logs app.Logs + Previous bool + type NavGroup struct + Heading string + Items []NavItem + type NavItem struct + Active bool + Badge string + Href string + Icon string + Label string + type Nets interface + AddDomain func(ctx context.Context, ownerID, name, host string) error + AllDomains func(ctx context.Context, ownerID string) ([]app.InstallDomain, error) + Networking func(ctx context.Context, ownerID, name string) (app.Networking, error) + RemoveDomain func(ctx context.Context, ownerID, name string, id uuid.UUID) error + ResolverName func() string + SetNetworking func(ctx context.Context, ownerID, name string, httpsOnly, cnameOnly bool) error + TargetStatus func(ctx context.Context, target string) string + VerifyDomain func(ctx context.Context, ownerID, name string, id uuid.UUID) error + type NetworkingData struct + App string + Error string + Net app.Networking + Notice string + ResolverName string + Settled bool + UntrustedCert bool + type NewAppData struct + Blueprint app.Blueprint + CanConfigureRegistry bool + Error string + Form NewAppForm + Source app.Source + Sources []app.Blueprint + type NewAppForm struct + Env string + Image string + Name string + Port string + Replicas string + RepoBranch string + RepoSubdir string + RepoURL string + type NodeDetailData struct + CanManage bool + Drained bool + Error string + Found bool + Node orchestrator.NodeInfo + Notice string + Pods []orchestrator.PodInfo + type Options struct + Accounts Accounts + AppDomain string + Apps Apps + Authenticated bool + BaseURL string + BootstrapEmail string + BootstrapTeamID string + BootstrapTeamName string + Identity identity.Provider + Joiner Joiner + Logger *slog.Logger + Logs Logger + MagicLinkTTL time.Duration + MailTransport string + Mailer notify.Mailer + Nets Nets + Orchestrator orchestrator.Orchestrator + Registries Registries + SessionTTL time.Duration + Slots SlotProvider + Stacks Stacks + Version string + WildcardTLS bool + type OverviewData struct + Activity app.DeployActivity + AppCount int64 + Apps []app.App + ClusterError string + ClusterOK bool + OwnerName string + Summary orchestrator.ClusterSummary + type Page struct + Base string + Extra url.Values + From int + Matched int + Number int + Query string + To int + Total int + func (p Page) Empty() bool + func (p Page) Filtered() bool + func (p Page) HasNext() bool + func (p Page) HasPrev() bool + func (p Page) Href(number int) string + func (p Page) NextHref() string + func (p Page) PrevHref() string + type PlatformDNSData struct + DNS cluster.DNS + Domains []app.InstallDomain + Error string + ResolverName string + TargetResolves string + type ProjectListData struct + Error string + Projects []app.Project + type Registries interface + CanStore func() bool + Clear func(ctx context.Context) error + Set func(ctx context.Context, by uuid.UUID, host, repository, username, password string, ...) error + Settings func(ctx context.Context) (registry.Settings, error) + type RegistryData struct + Error string + HasKey bool + Notice string + Registry registry.Settings + type ResourceSlider struct + Display string + Label string + Max int64 + MaxDisplay string + Name string + Step int64 + Unset bool + Value int64 + type Server struct + func New(opts Options) (*Server, error) + func (s *Server) Handler() http.Handler + type SettingsData struct + AccountsOn bool + AppDomain string + Authenticated bool + ClusterOK bool + MailTransport string + OwnerID string + OwnerName string + SessionTTL string + Version string + WildcardTLS bool + type SignInData struct + Email string + Error string + Method SignInMethod + type SignInMethod string + const SignInByLink + const SignInByPassword + type SlotProvider interface + Slots func(ctx context.Context, r *http.Request) Slots + type SlotProviderFunc func(ctx context.Context, r *http.Request) Slots + func (f SlotProviderFunc) Slots(ctx context.Context, r *http.Request) Slots + type Slots struct + Banner templ.Component + Bare bool + BrandHref string + BrandName string + Breadcrumb []Crumb + Flash *Flash + FullBleed bool + HeaderTools templ.Component + Nav []NavGroup + SidebarFooter templ.Component + SidebarTop templ.Component + Title string + type Stacks interface + DeployTemplate func(ctx context.Context, ownerID, slug, stack string) (app.Project, error) + type Step struct + At time.Time + Commands []string + Detail string + Label string + State StepState + type StepState string + const StepActive + const StepDone + const StepErr + const StepWait + type Surfaces struct + DNS bool + Registry bool + func SurfacesFromContext(ctx context.Context) Surfaces + type TeamChoice struct + Active bool + ID string + Name string + Role account.Role + func TeamsFromContext(ctx context.Context) []TeamChoice + type TeamPageData struct + Error string + Invitations []account.Invitation + Members []account.Member + TeamID string + TeamName string + Viewer account.Role + ViewerID uuid.UUID + type TemplateListData struct + Error string + Slug string + Stack string + Templates []app.Template + type VolumesData struct + Error string + OK bool + Volumes []orchestrator.VolumeInfo