charleslightjarvis/laravel-todo
A Laravel package for adding todo lists and task management to your application. It offers a simple way to create, track, and organize to-dos, with models, migrations, and a clean API that fits naturally into Laravel projects.
User, action items on Project, follow-ups on Team, QA steps on Deal) can be shipped in days rather than a sprint. This is the core decision the package informs: it converts a recurring, deceptively expensive feature request into a composer require plus a trait.overdue(), dueToday(), and highPriority() scopes imply reporting and digest-email use cases ("what's late across my projects?"). The announced todos:prune command is the PM's cue to plan retention policy before volume arrives.TodoCreated, TodoCompleted, TodoCancelled) are "coming soon," which means today there is no supported hook for notifications, audit logs, or webhooks. If the roadmap depends on "notify the assignee when a task is completed," that work is blocked or requires model observers against package internals — a real coupling risk worth tracking as a dependency, not a nice-to-have.Adopt when most of the following hold:
todos table plus trait plus scopes is a few days of work and then permanent maintenance. Buying wins if the package's scope vocabulary (pending/completed/overdue/dueToday) matches your product language.Look elsewhere, or build, when:
For executives: This is a small, low-cost library that gives us checklist and to-do capability on any object in the product — users, projects, teams — without building it ourselves. It turns a feature we get asked for repeatedly into days of integration work instead of a multi-week build, and it keeps our engineers focused on the parts customers actually pay for. The trade-off is maturity: it is a v1.0.0, single-maintainer package, so we would use it for internal tooling and back-office workflows first, and reassess before putting it on a customer-facing critical path.
For engineering: It is a well-scoped, tested (Pest) Laravel package with a polymorphic Todo model, a HasTodos trait, a Todo facade with for($model) query building, and useful scopes (pending, completed, overdue, highPriority, dueToday). Installation publishes config and migrations, so we own the schema — plan for that in upgrade and backup discussions. Known gaps to design around: no assignee model (creator only), no events yet, no pruning command yet, and no ordering or hierarchy fields. Recommended posture: adopt behind our own service/action layer rather than calling the facade from controllers, so that swapping it out (or wrapping it) stays a contained change, and so notification and authorization logic lives in our code where we control it.
How can I help you explore Laravel packages today?