A modern realtime Kanban board application built with Laravel 12, Livewire, and Tailwind CSS.
KanbanBoard provides a collaborative task management environment with realtime synchronization, role-based access control, and a scalable SaaS-style UI architecture.
- WebSocket-based realtime synchronization using Laravel Reverb
- Card and column updates reflected instantly across connected clients
- Drag-and-drop card movement
- Column reordering
- Task priority and due dates
- Member assignment
- Role-based permissions
- Owner
- Editor
- Viewer
- Full-text search using Laravel Scout
- Filter by:
- priority
- assigned user
- due date
- Realtime card comments
- Activity feed for board actions
- Card assignment
- Comment activity
- Due date reminders
- Token-based design system
- Component-driven Blade UI
- Motion system for interactions
- Dark mode support
- Redis caching
- Optimized database queries
- Indexed database schema
- PHP 8.2+
- Laravel 12.x
- Laravel Reverb (WebSocket)
- Blade
- Livewire
- Tailwind CSS
- Alpine.js
- SQLite (default)
- Redis (cache + queue ; Not applied yet)
- Laravel Scout (Database driver)
- Node.js
- Vite
- PHP 8.2+
- Composer 2.x
- Node.js 18+
- Redis 7+
- SQLite 3
git clone https://github.com/glitter-node/kanban-board.git
cd kanban-boardInstall dependencies:
composer install
npm installCreate environment file:
cp .env.example .env
php artisan key:generateRun migrations:
php artisan migrateOptional seed data:
php artisan db:seedStart the development server:
composer devThis command starts:
- Laravel development server
- Queue worker
- Log monitor
- Vite dev server App URL:
http://localhost:8000Realtime updates require the Reverb server.
WebSocket endpoint:
wss://reverb-ws.glitter.tw/app/xi8cgvcxkjpn6r3rrxirIf not using composer dev:
Terminal 1:
php artisan serveTerminal 2:
npm run dev- Login
- Go to My Boards
- Click Create Board
Typical workflow:
To Do
In Progress
Done
Each card supports:
- title
- description
- priority
- due date
- assigned user
- Move cards between columns
- Reorder columns
- Touch support for mobile
Search cards by:
- title
- description Filter cards by:
- priority
- assigned user
- due date
Boards can be exported as:
- JSON
- Markdown
Run all tests:
php artisan testRun unit tests:
php artisan test --testsuite=UnitRun feature tests:
php artisan test --testsuite=FeatureCode style check:
vendor/bin/pint --testAuto fix style:
vendor/bin/pintAll API routes require session authentication.
Rate limit:
60 requests per minute
GET /boards
POST /boards
GET /boards/{id}
PUT /boards/{id}
DELETE /boards/{id}
POST /api/boards/{board}/columns/{column}/cards
PUT /api/boards/{board}/cards/{card}
DELETE /api/boards/{board}/cards/{card}
POST /api/boards/{board}/cards/{card}/move
GET /api/boards/{board}/cards/{card}/comments
POST /api/boards/{board}/cards/{card}/comments
Channel:
private-board.{boardId}
Events:
CardCreated
CardUpdated
CardMoved
ColumnCreated
ColumnUpdated
CommentCreated
ActivityLogged
| Role | Permissions |
|---|---|
| Owner | Full board control |
| Editor | Card & column management |
| Viewer | Read-only |
MIT License