Download the PHP package charleslightjarvis/laravel-todo without Composer
On this page you can find all versions of the php package charleslightjarvis/laravel-todo. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download charleslightjarvis/laravel-todo
More information about charleslightjarvis/laravel-todo
Files in charleslightjarvis/laravel-todo
Package laravel-todo
Short Description A Laravel package to attach todo lists to any Eloquent model.
License MIT
Homepage https://github.com/charleslightjarvis/laravel-todo
Informations about the package laravel-todo
Laravel Todo
Attach todo lists to any Eloquent model in your Laravel application.
The Problem
In a Laravel application, multiple entities (User, Project, Team, Invoice...) often need their own todo list. Without a package, you have to:
- Create a separate table for each entity type (
user_todos,project_todos,team_todos...) - Duplicate models, scopes, and relationships
- Maintain the same logic across multiple places
- No unified API to interact with todos
The Solution
laravel-todo lets you attach todos to any Eloquent model with a single trait. One table, one logic, every model.
- ✅ Attach todos to
User,Project,Team,Invoice— anything - ✅ Fluent API via Trait and Facade
- ✅ Built-in scopes:
pending,completed,overdue,highPriority,dueToday - ✅ Polymorphic creator support (tracks who created the todo)
- ✅ Zero duplication
Features
- ✅ Polymorphic relationship – attach todos to any model (
User,Project,Team, etc.) - ✅ Fluent API via Facade or Trait
- ✅ Built-in scopes:
pending(),completed(),overdue(),highPriority(),dueToday() - ✅ Status management:
pending,in_progress,completed,cancelled - ✅ Priority levels:
low,medium,high - ✅ Tracks who created each todo (polymorphic
creatorrelation) - ✅ Zero UI – backend only, integrate however you want
Requirements
- PHP 8.2 or higher
- Laravel 11.0 or higher
Installation
Install the package via Composer:
Publish the migration file:
Run the migrations:
Publish the configuration file (optional):
Configuration
The config file config/todo.php allows you to customize:
Usage
1. Add the trait to your model
Add HasTodos to any Eloquent model you want to attach todos to:
2. Creating todos via the Trait
Use the todos() relation directly on any model that uses HasTodos:
3. Querying todos via the Trait
All built-in scopes are available directly on the relation:
4. Creating and querying todos via the Facade
The Todo facade provides a model-agnostic API — useful when you do not have a direct reference to the owning model instance:
5. Completing and cancelling todos
Both methods are ownership-aware — they silently return false if the todo does not belong to the model:
6. Accessing todo relations
7. Tracking who created a todo
Available Scopes
| Scope | Description |
|---|---|
pending() |
Status = pending |
inProgress() |
Status = in_progress |
completed() |
Status = completed |
cancelled() |
Status = cancelled |
overdue() |
Not completed + due_at in the past |
highPriority() |
Priority = high |
dueToday() |
due_at is today |
Enums
The package provides two enums for type safety:
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Contributions are welcome! Please see CONTRIBUTING for details.
Security
If you discover any security-related issues, please email [email protected] instead of using the issue tracker.
Credits
- Charles Lightjarvis
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of laravel-todo with dependencies
spatie/laravel-package-tools Version ^1.16
illuminate/contracts Version ^11.0 || ^12.0 || ^13.0
illuminate/database Version ^11.0 || ^12.0 || ^13.0
illuminate/support Version ^11.0 || ^12.0 || ^13.0