CO
feat: Global Deployments Page
coollabsio/coolify#8074

Summary

Adds a new Deployments page that shows all past deployments across all projects for the current team, with filtering and live updates. This addresses a common need for teams managing multiple applications — being able to see deployment history in one place rather than navigating to each application individually.

Resolves #7596 /claim #7596

What’s Changed

New Sidebar Navigation Item

  • Added Deployments entry in the sidebar between Projects and Servers
  • Uses a rocket icon consistent with the tabler icon style used throughout the app
  • Active state highlighting when on the deployments page

New Livewire Component: App\Livewire\Deployments\Index

  • Queries ApplicationDeploymentQueue scoped to the current team’s servers (same security model as DeploymentsIndicator)
  • Supports four URL-synced filters via Livewire #[Url] attributes:
    • Status — Queued, In Progress, Finished, Failed, Cancelled
    • Project — filter by project (uses project UUID)
    • Server — filter by server
    • Source — filter by Git source (GitHub/GitLab app)
  • Auto-hides filter dropdowns when only one option exists (e.g., if you only have one server, the server filter is hidden)
  • Pagination with Previous/Next navigation (20 items per page)
  • Live updates via wire:poll.5000ms — polls every 5 seconds to show new deployments and status changes
  • Filter options are refreshed on each poll to pick up new servers/projects/sources
  • Listens to the ServiceChecked echo event for real-time updates

New Blade View: resources/views/livewire/deployments/index.blade.php

  • Responsive layout that works on mobile and desktop
  • Each deployment card shows:
    • Status badge with color coding matching the existing deployment page (blue=in progress, purple=queued, green=success, red=failed, gray=cancelled)
    • Application name with deployment type badge (Manual/Webhook/API/PR/Rollback)
    • Project & environment path
    • Server name with server icon
    • Commit hash (short format)
    • Timing info — relative time for finished deployments, duration for in-progress, queued time for queued
  • Left border color coding matching existing deployment/index.blade.php patterns
  • Empty state with contextual messaging (different for filtered vs unfiltered)
  • Links to individual deployment detail pages via deployment_url or constructed route

Route

  • GET /deploymentsApp\Livewire\Deployments\Index (named deployments)
  • Added within the existing auth + verified middleware group

Design Decisions

  1. Team scoping via server IDs — follows the same pattern as DeploymentsIndicator to ensure users only see deployments for servers they have access to
  2. URL query string sync — filters are synced to URL params so filtered views can be shared/bookmarked
  3. Filter auto-hiding — keeps the UI clean for simple setups while being powerful for complex ones
  4. 20 items per page — larger than the per-application deployment page (10) since this is an overview page
  5. No new dependencies — uses only existing Livewire, Alpine.js, and Tailwind utilities

Screenshots

The page follows existing Coolify design patterns exactly — same card styles, same status badges, same color scheme as the per-application deployment list.

Testing

  • Verified PHP syntax is valid
  • Component follows established patterns from Project\Application\Deployment\Index and DeploymentsIndicator
  • Filter logic uses standard Eloquent queries with proper team scoping
  • No breaking changes to existing functionality

Claim

Total prize pool $50
Total paid $0
Status Pending
Submitted January 27, 2026
Last updated January 27, 2026

Contributors

NE

nexicturbo

@nexicturbo

100%

Sponsors

IL

Ilias Ism

@me

$50