/claim #7528

Changes

Add database detection and backup support for Docker Compose applications deployed via GitHub App (dockercompose buildpack). Previously, parseDockerComposeFile() only created ServiceDatabase records in the Service code path — the Application code path detected databases but never persisted them, making backups impossible.

This PR adds the full chain: detection → record creation → backup scheduling → backup execution → UI.

Key changes:

  • Migration adds nullable application_id FK to service_databases, makes service_id nullable, adds CHECK constraint ensuring at least one parent
  • ServiceDatabase model gets application() relationship + parentResource(), server(), getDestination(), parentUuid() helpers for polymorphic parent resolution
  • parseDockerComposeFile() Application path now creates ServiceDatabase records when isDatabaseImage() returns true
  • Application model gets databases() relationship
  • All backup infrastructure (DatabaseBackupJob, ScheduledDatabaseBackup, BackupEdit, BackupExecutions, Import, StartDatabaseProxy, StopDatabaseProxy, backup download route, cleanup helper, filesystem volumes helper) updated to use new helpers instead of hardcoded ->service-> chains
  • New ApplicationDatabaseBackups Livewire component, blade view, and route
  • Compose application general view shows detected databases with backup links

Issue

  • Resolves #7528

Category

  • New feature

Screenshots or Video (if applicable)

Screen recording will be added before bounty claim.

AI Usage

  • AI is used in the process of creating this PR

Steps to Test

  • Step 1 – Create a new project, add a new Application resource using “Docker Compose” via GitHub App (not “Empty Docker Compose” which uses Service model)
  • Step 2 – Use a docker-compose.yml that includes a database service (e.g. postgres:16 or mysql:8) alongside an app service
  • Step 3 – Deploy the application and verify the compose general view now shows a “Databases” section listing the detected database with its type
  • Step 4 – Click the “Backups” link next to the detected database and verify the backup scheduling page loads correctly
  • Step 5 – Create a scheduled backup, wait for it to execute, and verify the backup completes successfully
  • Step 6 – Verify existing Service-type compose deployments still work as before (no regression)

Contributor Agreement

[!IMPORTANT]

  • I have read and understood the contributor guidelines. If I have failed to follow any guideline, I understand that this PR may be closed without review.
  • I have tested the changes thoroughly and am confident that they will work as expected without issues when the maintainer tests them

Claim

Total prize pool $100
Total paid $0
Status Pending
Submitted February 06, 2026
Last updated February 06, 2026

Contributors

YU

Yuvraj Angad Singh

@yuvrajangadsingh

100%

Sponsors

IL

Ilias Ism

@me

$100