script-development/kendo-report-tool
Laravel package for creating Kendo UI reports from Eloquent queries. Define reusable report schemas, apply filters, and output JSON or Blade views for Kendo Report Viewer. Streamlines data preparation and printable report generation.
Architecture fit. The package is a thin, Laravel-native client for submitting reports to a Kendo service. Auto-discovered KendoReportToolServiceProvider, merged/publishable config/report-tool.php, and a single public call — KendoReports::submit(...) — keep the integration surface small. It fits cleanly into a Laravel backend service or internal tool where report creation is a supporting workflow rather than the core domain. The synchronous multipart POST is the main architectural constraint: this should be invoked from a queued job or console command, not directly inside a user-facing HTTP request, unless latency and worker occupancy are acceptable.
Integration feasibility. Low code-integration effort: install via Composer, publish config, set REPORT_TOOL_* environment variables, and call the client. Multipart upload accepts Illuminate\Http\UploadedFile instances or local paths, which covers the common Laravel upload flow. The report:create Bearer scope appears appropriately narrow. The CI matrix (audit → format → PHPStan level-max → test) and Pest/Testbench harness are positive quality signals for a v0.1.0 package.
Technical risk. Primary risks are maturity, runtime coupling, and operational behavior. This is a 0.1.0 release, so breaking changes should be expected. PHP 8.4/8.5-only support is narrow and may block adoption on older Laravel estates. The release notes do not describe retry/backoff, idempotency keys, batching, Laravel HTTP client injection/mocking, or response schema versioning. The synchronous call, bounded timeouts, and surfaced failures by default are sensible, but REPORT_TOOL_SWALLOW=true degrades failures to error_log plus null, which is convenient for non-critical reporting but risky if used broadly. No PII scrubbing is intentional because report content is user input, but that creates data-governance obligations.
Key questions.
connect_timeout and timeout values, and is there any retry/backoff policy?swallow mode log report content, and where does error_log go in our deployment?201 body, and how are Kendo API changes versioned?0.x?Stack fit. Best fit is a Laravel application on PHP 8.4+ with a queue worker available. The package’s config/env model maps well to per-environment deployment. Use it behind an internal application service or interface rather than calling KendoReports::submit directly throughout the codebase, so the dependency can be mocked, version-pinned, and replaced if the package or Kendo API changes.
Migration path. No prior assessment exists, so this is a greenfield adoption. There is no migration from an earlier package version. Start with a non-critical report type or internal tool, wire config and token in a sandbox, and wrap submission in a queued job. Avoid introducing swallow=true initially; keep failures visible until the workflow is proven.
Compatibility. Confirm the host application’s Laravel and PHP versions against the package constraints before adoption. PHP 8.4/8.5-only support is a gating factor. Verify that dependency constraints do not conflict with existing Composer packages, and validate that auto-discovery works in the target application. The Testbench/Pest harness should allow package-level confidence, but the host app still needs its own integration test against a Kendo sandbox or fake.
Sequencing.
REPORT_TOOL_* values per environment.0.x release.Maintenance. The package is small and appears well-tested for its scope, but 0.1.0 maturity means upgrade risk is non-trivial. Pin the version and review changelogs before upgrades. Maintain the internal wrapper so package-level breaking changes do not ripple across the application. Budget modest ongoing effort for dependency updates and Kendo API contract checks.
Support. No support model is stated in the release notes. Treat this as an internally owned integration: assign an owner, document the Kendo endpoint/project/token setup, and create a runbook for auth failures, timeouts, and non-201 responses. The surfaced ReportSubmissionException with HTTP status is useful for alerting, but swallow mode’s error_log path is not a substitute for structured, centralized logging.
Scaling. Each submission is a synchronous multipart POST, so throughput scales with queue workers and Kendo service capacity rather than the package itself. File uploads increase memory, bandwidth, and request duration; enforce size and count limits in the host application before calling the client. A shared Bearer token may become a rate-limit or rotation bottleneck. There is no described batch API, so high-volume reporting should be modeled as many queued jobs with concurrency limits.
Failure modes.
ReportSubmissionException with status 0, unless swallow=true, then logs and returns null.201 response: throws with the HTTP status, unless swallowed.201 failure; no refresh flow is described.connect_timeout/timeout, but no retry/backoff is described.swallow=true can hide failures from application monitoring because output goes to local error_log.Ramp-up. Developer ramp-up is low: one Composer dependency, one config file, and one client call. Operational ramp-up is moderate: teams need to understand queue placement, timeout defaults, token rotation, failure alerting, file validation, and the risks of swallow mode. A TPM should coordinate environment setup, data-governance review, and a monitored pilot before treating report submission as a production-critical dependency.
How can I help you explore Laravel packages today?