dniccum/linear-sdk
A PHP SDK for the Linear API that simplifies working with Linear's GraphQL endpoint. It provides convenient, structured methods for querying issues, projects, teams, and related resources, so you can integrate Linear data into your app without hand-writing GraphQL queries.
Architecture fit
created/updated/deleted) via the CreatesLinearIssues trait, plus a workspace-owner trait (HasLinearConnection). This is the Laravel Spark billing pattern applied to issue tracking: opt-in per model, no changes to controllers or domain services. That is a low-friction architectural fit and keeps the integration declarative rather than scattered through application code.BugReport, SupportTicket) and expand from there, which is exactly the kind of incremental scope a roadmap needs.Integration feasibility
Linear::fake() with assertIssueCreated() and failWith() is a genuine feasibility win — the integration can be covered in CI without network access, so acceptance criteria are testable and the QA cost is bounded.Technical risk
linear_sync_status become a source of truth.deleted event handling is a decision, not a default. Mapping deletions to Linear issues can close or archive work items unintentionally. Require an explicit per-model allowlist of linearEvents() reviewed by the product owner.array cache deployments will misbehave at refresh time.Key questions
HasLinearConnection sits on User or Team and drives the entire data model.img-src is a pre-launch task with a visible UI degradation if missed.deleted → Linear behavior in scope for any model?Stack fit
/linear, embed <x-linear::settings /> in an existing settings layout, or suppress it entirely and build a bespoke UI against the Actions/DTOs.Migration path
database/migrations directory. The package owns no schema of its own at runtime — the app does. Establish a convention early (naming, no edits post-deploy) before the migration count grows.linear_issue_url/linear_sync_status remain. Decide whether to leave the columns (harmless) or back them out in a later release.Compatibility
Linear::fake()) should be treated as stable from here.Sequencing
linearEvents() restricted to created only; wire the error sink and LinearIssueFailed alerting.vendor:publish --tag=linear-assets --force to post-update-cmd before the first deploy that touches the UI.Maintenance
public/ and are not updated by composer update. Re-publishing after every package update is a manual step that will be forgotten. Mandate the post-update-cmd automation in the same PR that introduces the package — this is the single most likely source of "the settings page is broken/stale" tickets.Support
login) and the configurable Back link (Linear::backUsing(), default /dashboard) — both are defaulted to Laravel conventions and will be wrong for apps that differ.Scaling
Failure modes
LinearIssueFailed event → alert; remediate via retry button or retryLinear().linear_sync_status is the only in-app signal. Alert on queue depth, not just on failures.deleted is enabled and misconfigured, Linear issues are closed/archived unexpectedly — a one-way, user-visible error. Keep the event allowlist minimal and reviewed.Ramp-up
Linear::fake().How can I help you explore Laravel packages today?