Looking to hire Laravel developers? Try LaraJobs

laravel-todo-board maintained by vadykoo

Description
A standalone Laravel kanban-style todo board with assignees, due dates, images, and drag-and-drop.
Author
Last update
2026/10/21 21:38 (dev-main)
License
Downloads
0
Tags

Comments
comments powered by Disqus

Laravel Todo Board

A standalone kanban-style todo board for Laravel. Drag-and-drop columns, assignees, due dates, rich-text descriptions, and image attachments — installable via Composer with no Voyager (or other admin panel) dependency.

Package: vadykoo/laravel-todo-board
Requires: PHP 8.1+, Laravel 10, 11, or 12

Install

composer require vadykoo/laravel-todo-board
php artisan migrate
php artisan storage:link

Migrations load from the package automatically. Optional publishes:

php artisan vendor:publish --tag=todo-board-config
php artisan vendor:publish --tag=todo-board-views
php artisan vendor:publish --tag=todo-board-migrations

Open /todo-board while authenticated.

Features

  • Four columns: To do, In progress, Review, Done
  • Drag-and-drop reordering (plus a one-tap “mark done” control)
  • Assignees and due dates
  • TinyMCE rich-text descriptions
  • Image attachments (served privately through package routes)
  • Visibility rules: users see their own tasks; designated users see everything

Configuration

Publish the config file, then edit config/todo-board.php:

Key Default Purpose
route_prefix todo-board URL prefix
route_name_prefix todo-board. Route name prefix
middleware ['web', 'auth'] Route middleware
user_model \App\Models\User::class Eloquent user model
view_all_user_ids [1] User IDs that can view/manage all tasks
assignees null Optional callable to filter assignable users
disk public Filesystem disk for images

Who can see all tasks

The Gate todo-board.view-all defaults to allowing IDs listed in view_all_user_ids. Override it in your app if you prefer roles:

use Illuminate\Support\Facades\Gate;

Gate::define('todo-board.view-all', function ($user) {
    return $user->hasRole('admin'); // your own check
});

Everyone else only sees tasks where assigned_to is their user id.

Limit assignees

// config/todo-board.php
'assignees' => function ($query) {
    return $query->where('is_admin', true);
},

Legacy App\User models

'user_model' => \App\User::class,

Voyager (optional)

This package does not depend on Voyager. If you still use Voyager in the host app, you can add a menu item that points at the todo-board.index route yourself — that wiring stays in the host application.

Local path develop

{
    "repositories": [
        {
            "type": "path",
            "url": "../laravel-todo-board",
            "options": { "symlink": true }
        }
    ],
    "require": {
        "vadykoo/laravel-todo-board": "*"
    }
}

License

MIT