A Modern Project & Task Management Dashboard
FluxFlow is a high-productivity Kanban workspace designed to bridge the gap between high-level project strategy and granular task execution. Built with the TALL Stack (Tailwind, Alpine.js, Laravel, Livewire), it emphasizes fluid motion, a theme-aware interface, API access, and power-user features.
- Drag & Drop Reordering - Prioritize projects by dragging them into your preferred order
- Visual Identity - Custom emoji icons and color-coded project tabs
- Progress Rings - Real-time completion percentage for each project
- Priority Glow - High-priority projects feature a subtle red glow indicator
- Compact Mode - Collapse the sidebar to icon-only view with a quick toggle
- The Vault - Collapsible archive section for completed or paused projects
- Four Status Columns - To Do, In Progress, Review, and Done
- Cross-Column Drag & Drop - Move tasks between columns with smooth animations
- Task Cards featuring:
- Priority badges (Low/Medium/High)
- Due date indicators with overdue warnings
- Effort score points
- Assignee avatars
- Attachment count indicators
- Optimistic UI - Instant visual feedback before server confirmation
- Quick Edit Panel - Update task details without leaving the board
- File Dropzone - Drag & drop file uploads with progress indicators
- Attachment Grid - Image thumbnails and file-type icons
- Multi-file Support - Upload multiple files at once (max 10MB each)
- Universal Search - Find projects and tasks across your workspace
- Keyboard Shortcut - Press
โKorCtrl+Kto open instantly - Smart Results - Grouped by projects and tasks with status indicators
- Keyboard Shortcuts
N- Create new task (when project is selected)P- Create new projectESC- Close any modalโK/Ctrl+K- Open global search
- Smooth Animations - Weighted, tactile drag interactions
- Theme Persistence - Light and dark mode stay in sync across refreshes
- API Key Management - Generate, regenerate, and copy a personal API key from the user menu
| Technology | Purpose |
|---|---|
| Laravel 13 | Backend framework & API |
| Livewire 4 | Real-time UI components |
| Alpine.js | Frontend interactivity & animations |
| Tailwind CSS 4.1 | Utility-first styling |
| SortableJS | Drag & drop functionality |
| MariaDB | Primary database engine |
| Flux UI | Pre-built UI components |
| Scramble | Generated OpenAPI documentation |
- PHP 8.3+
- Composer
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/a6e6s/FluxFlow.git
cd fluxflow
# Install PHP dependencies
composer install
# Install Node dependencies
npm install
# Copy environment file
cp .env.example .env
# Generate application key
php artisan key:generate
# Run database migrations
php artisan migrate
# Seed sample data (optional)
php artisan db:seed
# Create storage symlink
php artisan storage:link
# Build assets
npm run build
# Start the development server
php artisan serve# Run with hot reload
npm run dev
# In a separate terminal (disable Xdebug for better performance)
XDEBUG_MODE=off php artisan serveThe workspace API is available under /api/v1 and is authenticated with the API key created from the user dropdown.
- Open the user menu in the top-right corner.
- Choose API Key.
- Generate or regenerate a key, then copy it.
- Send it with either
Authorization: Bearer <api-key>orX-API-Key: <api-key>.
The API documentation is generated with Scramble and is available at /docs/api.
- The API accepts a single user-scoped key per account.
- The key is stored encrypted, while a SHA-256 hash is used for request authentication.
- Requests without a valid key receive
401 Unauthenticated.
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/v1/projects |
List the authenticated userโs active projects |
POST |
/api/v1/projects |
Create a project |
GET |
/api/v1/projects/{project} |
Show a project |
PUT / PATCH |
/api/v1/projects/{project} |
Update a project |
DELETE |
/api/v1/projects/{project} |
Delete a project |
GET |
/api/v1/projects/{project}/tasks |
List tasks for a project |
POST |
/api/v1/projects/{project}/tasks |
Create a task inside a project |
GET |
/api/v1/projects/{project}/tasks/{task} |
Show a task |
PUT / PATCH |
/api/v1/projects/{project}/tasks/{task} |
Update a task |
DELETE |
/api/v1/projects/{project}/tasks/{task} |
Delete a task |
title- required string, 2-100 charactersicon- optional string, up to 50 characterscolor- required hex color like#3b82f6priority-low,medium, orhighsort_order- optional non-negative integer
title- required string, 2-255 charactersdescription- optional stringpriority-low,medium, orhighstatus-todo,doing,review, ordonesort_order- optional non-negative integerdue_date- optional dateeffort_score- optional integer from 1 to 10assigned_to- optional user ID
- Project responses include
id,title,icon,color,priority,sort_order,archived_at,created_at, andupdated_at. - Task responses include
id,project_id,assigned_to,title,description,priority,status,sort_order,due_date,effort_score,created_at, andupdated_at.
fluxflow/
โโโ app/
โ โโโ Enums/
โ โ โโโ Priority.php # Low, Medium, High
โ โ โโโ TaskStatus.php # Todo, Doing, Review, Done
โ โโโ Livewire/
โ โ โโโ CreateProjectModal.php
โ โ โโโ CreateTaskModal.php
โ โ โโโ GlobalSearch.php
โ โ โโโ KanbanBoard.php
โ โ โโโ ProjectSidebar.php
โ โ โโโ TaskDetails.php
โ โโโ Models/
โ โโโ Attachment.php # Polymorphic file attachments
โ โโโ Project.php
โ โโโ Task.php
โ โโโ User.php
โโโ database/
โ โโโ factories/
โ โ โโโ ProjectFactory.php
โ โ โโโ TaskFactory.php
โ โ โโโ UserFactory.php
โ โโโ migrations/
โ โโโ create_users_table.php
โ โโโ create_projects_table.php
โ โโโ create_tasks_table.php
โ โโโ create_attachments_table.php
โโโ resources/
โ โโโ css/
โ โ โโโ app.css # Custom styles & animations
โ โโโ views/
โ โโโ components/
โ โ โโโ layouts/
โ โ โโโ kanban.blade.php
โ โโโ livewire/
โ โโโ create-project-modal.blade.php
โ โโโ create-task-modal.blade.php
โ โโโ global-search.blade.php
โ โโโ kanban-board.blade.php
โ โโโ project-sidebar.blade.php
โ โโโ task-details.blade.php
โ โโโ partials/
โ โโโ kanban-column.blade.php
โ โโโ task-card.blade.php
โโโ routes/
โโโ web.php
| Field | Type | Description |
|---|---|---|
id |
bigint | Primary key |
user_id |
foreignId | Project owner |
title |
string | Project name |
icon |
string | Emoji icon (optional) |
color |
string | Hex color code |
priority |
enum | low, medium, high |
sort_order |
int | Display order |
archived_at |
timestamp | Archive date (nullable) |
| Field | Type | Description |
|---|---|---|
id |
bigint | Primary key |
project_id |
foreignId | Parent project |
assigned_to |
foreignId | Assigned user (nullable) |
title |
string | Task title |
description |
text | Task details (nullable) |
priority |
enum | low, medium, high |
status |
enum | todo, doing, review, done |
sort_order |
int | Column order |
due_date |
date | Due date (nullable) |
effort_score |
tinyint | Complexity points 1-10 |
| Field | Type | Description |
|---|---|---|
id |
bigint | Primary key |
attachable_id |
bigint | Parent ID |
attachable_type |
string | Parent model class |
file_path |
string | Storage path |
file_name |
string | Original filename |
file_size |
int | Size in bytes |
| Shortcut | Action |
|---|---|
N |
New Task (requires selected project) |
P |
New Project |
ESC |
Close modal/slide-over |
โK / Ctrl+K |
Open Global Search |
| Sidebar arrow | Collapse or expand the project list |
Enter |
Submit form / Select search result |
- Click the + button beside Active Projects, or press P
- Enter project name, select icon, color, and priority
- Click "Create Project"
- Open the user dropdown in the top-right corner
- Choose API Key
- Generate or regenerate a key
- Copy the key and use it in API requests
- Select a project from the sidebar
- Click "Add Task" button or press N
- Fill in task details (title, description, priority, due date)
- Click "Create Task"
- Drag a task card from any column
- Drop it into the target column
- Tasks automatically save their new status
- Hover over a project in the sidebar
- Grab the drag handle (โฎโฎ icon)
- Drag to reorder
- Click on any task card
- Update fields in the slide-over panel
- Upload attachments via drag & drop
- Click "Save Changes"
- Open a project
- Click the "Archive" button in the header
- Confirm the action
- Find archived projects in the "Archived" section of the sidebar
- Press
โKor click the search bar - Type your search query
- Click a result to navigate directly
- Use the theme button in the header to switch between light and dark mode
- Your selection persists after refresh
- Modals, drawers, and the sidebar follow the same saved appearance
# Application
APP_NAME=FluxFlow
APP_ENV=local
APP_DEBUG=true
# Database (MariaDB/MySQL)
DB_CONNECTION=mysql
# Uncomment and configure as needed:
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=fluxflow
# DB_USERNAME=root
# DB_PASSWORD=
# Performance
BCRYPT_ROUNDS=10
SESSION_DRIVER=file
CACHE_STORE=file-
Disable Xdebug in development:
XDEBUG_MODE=off php artisan serve
-
Use file-based cache instead of database:
CACHE_STORE=file SESSION_DRIVER=file
-
Enable OPcache in production for faster PHP execution
-
Run production build:
npm run build php artisan config:cache php artisan route:cache php artisan view:cache
-
If Flux assets 404 in production:
php artisan optimize:clear
composer install --no-interaction --prefer-dist --optimize-autoloader
php artisan route:cacheMake sure APP_URL matches the deployed root URL and that the web server forwards /flux/* requests to Laravel.
This project is open-sourced software licensed under the MIT license.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
If you have any questions or run into issues, please open an issue on GitHub.
Built with โค๏ธ using the TALL Stack
- adding team management
- adding user tasks and project management




