Flowdesk is a multi-tenant task management platform inspired by Jira-style workflows, built with Laravel + Inertia + React + TypeScript.
It supports workspace-based collaboration, role-based access, project boards, task lifecycle management, notifications, audit logs, and analytics dashboards.
- Overview
- Tech Stack
- Core Features
- Product Flows
- Local Development Setup
- Environment and Services
- Testing
- Key Routes
- Project Structure
- Notes for Contributors
Flowdesk is designed for teams that need:
- Clear workspace boundaries between organizations or teams
- Flexible project planning views (board, list, calendar)
- Rich task operations (priorities, assignees, labels, comments, attachments)
- Activity traceability and actionable notifications
- Dashboard analytics for execution visibility
- PHP 8+
- Laravel 13
- Fortify authentication
- Pest for testing
- SQLite/MySQL compatible Eloquent models and migrations
- Inertia.js (Laravel + React bridge)
- React + TypeScript
- Tailwind CSS
- shadcn/ui components
- Recharts (analytics charts)
- Workspace ownership and membership model
- Workspace switch context per user
- Workspace settings management
- Safe empty-state handling when user has no workspace
- Workspace roles: owner, admin, member
- Policy-based authorization for workspace, project, and task actions
- Member role updates and member removal controls
- Invite by email with role assignment
- Resend and revoke pending invites
- Signed invitation acceptance links
- Friendly invalid/expired invitation pages
- In-app + email invite notifications
- Create, update, delete projects
- Public/private project visibility
- Project member assignment
- Global project search support
- Configurable project columns
- Column reorder
- Drag-and-drop task movement and reorder
- Task status sync from canonical board columns
- Board, list, and calendar views
- CRUD task lifecycle
- Task priority, due date, status
- Multi-assignee support
- Label management
- File attachments
- Threaded comments
- In-app database notifications
- Assignment, comment, due-soon notifications
- Mark single notification read
- Mark all notifications read
- Global toast feedback for flash success/error actions
- Workspace-scoped audit logs
- Human-readable activity entries
- Member action and task action tracking
- Filtered/paginated activity log page
- Global search for tasks, users, and projects
- Task filters by status, assignee, priority, due date
- KPI cards (open tasks, completed this week, overdue, active projects)
- My work sections (overdue, due today, in progress)
- Upcoming deadlines
- Recent activity with pagination
- Project progress breakdown
- Analytics datasets and charts:
- Tasks completed by day
- Tasks completed by week
- Tasks by status
- User productivity
- Activity timeline
- Workspace settings page with management actions
- User appearance preference support
- Compact view preference
- Branded welcome page with product preview
- Register and verify account
- Create workspace
- Invite members
- Create projects
- Add columns/tasks and start execution
- Create tasks in project
- Assign members and labels
- Move tasks through board columns
- Track progress in dashboard analytics
- PHP 8+
- Composer
- Node.js 20+
- npm
- SQLite or MySQL
composer install
npm installcp .env.example .env
php artisan key:generateUpdate database credentials in .env as needed.
php artisan migrateUse separate terminals:
php artisan serve
npm run devOptional worker for queued notifications/mail when using queue drivers:
php artisan queue:workCommon environment keys to verify:
- APP_URL
- DB_CONNECTION and DB_* settings
- MAIL_* settings (for invitation emails)
- QUEUE_CONNECTION
Run all tests:
php artisan testRun specific suites:
php artisan test tests/Feature/DashboardTest.php
php artisan test tests/Feature/Workspace/WorkspaceFlowTest.php
php artisan test tests/Feature/Project/KanbanBoardTest.php- Dashboard:
/dashboard - Projects:
/projects - Activity Logs:
/activity-logs - Workspace Settings:
/settings/workspace - Appearance Settings:
/settings/appearance - Invitation Acceptance:
/workspace-invitations/{invitation}
app/Laravel domain logic (controllers, models, policies, requests)database/migrations/schema evolutionresources/js/frontend pages, components, layouts, typesroutes/route definitionstests/Feature/product behavior and regression coverage
- Keep changes workspace-scoped for multi-tenant safety
- Add tests for behavioral changes
- Prefer policy checks for access control paths
- Keep frontend types in sync with controller payloads
- Re-run
php artisan testandnpm run types:checkbefore merging
Flowdesk aims to provide a clean, scalable base for team execution workflows while remaining straightforward to extend for advanced project operations.