{
    # Disable administrative API to prevent permission errors in read-only environments
    admin off
}

:8080 {
    root * /app/public
    
    # Compress static assets (HTML, JS, CSS, GEDCOM text files)
    encode gzip zstd
    
    file_server

    # Robust Security Headers
    header {
        X-Frame-Options "SAMEORIGIN"
        X-Content-Type-Options "nosniff"
        Referrer-Policy "strict-origin-when-cross-origin"
        Permissions-Policy "geolocation=(), microphone=(), camera=()"
    }

    # Cache Control: Long-lived cache ONLY for immutable hashed build assets
    @immutable_assets {
        path /assets/*
    }
    header @immutable_assets Cache-Control "public, max-age=31536000, immutable"

    # Cache Control: Immediate revalidation for all mutable assets (HTML, mounted dynamic family trees/photos)
    @mutable_assets {
        not {
            path /assets/*
        }
    }
    header @mutable_assets Cache-Control "public, max-age=0, must-revalidate"

    templates {
        mime text/html
    }

    try_files {path} /index.html
}
