A clean, dark-themed task management web application built with Laravel. Supports task creation with priority levels, drag-and-drop reordering, project filtering, and pagination.
- Create, edit, and delete tasks
- Set task priority: High or Low
- Drag-and-drop to reorder tasks (order is saved to the database)
- Organize tasks into projects
- Filter tasks by project using a tab bar
- Create and delete projects inline on the same page
- Pagination (5 tasks per page)
- Tasks without a project are still visible under "ALL"
- PHP 8.1 or higher
- Composer
- MySQL or SQLite
- Node.js (optional, only if you add frontend assets)
git clone https://github.com/your-username/taskify.git
cd taskifyOr unzip the downloaded folder and navigate into it:
cd taskifycomposer installcp .env.example .env
php artisan key:generatetouch database/database.sqliteMake sure your .env has:
DB_CONNECTION=sqliteUpdate your .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=taskify
DB_USERNAME=your_username
DB_PASSWORD=your_passwordThen create the database in MySQL:
CREATE DATABASE taskify;php artisan migrateThis creates the following tables:
| Table | Description |
|---|---|
projects |
Stores project names |
tasks |
Stores tasks with name, priority, sort_order, project_id, timestamps |
php artisan serveOpen your browser at http://localhost:8000
app/
Http/Controllers/
TaskController.php # CRUD + reorder logic for tasks
ProjectController.php # Create & delete projects
Models/
Task.php # Task model (name, priority, sort_order, project_id)
Project.php # Project model (name)
database/
migrations/
..._create_tasks_table.php
..._add_sort_order_to_tasks_table.php
..._create_projects_table.php
..._add_project_id_to_tasks_table.php
resources/
views/tasks/
index.blade.php # Full UI: project bar, task list, drag-and-drop, pagination
routes/
web.php # All application routes
| Method | URL | Action |
|---|---|---|
| GET | / |
List all tasks (filterable by project) |
| POST | /tasks |
Create a new task |
| PUT | /tasks/{id} |
Update task name, priority, project |
| DELETE | /tasks/{id} |
Delete a task |
| POST | /tasks/reorder |
Save drag-and-drop order |
| POST | /projects |
Create a new project |
| DELETE | /projects/{id} |
Delete a project |
| Column | Type | Notes |
|---|---|---|
| id | bigint | Primary key |
| name | varchar | Project name |
| created_at | timestamp | |
| updated_at | timestamp |
| Column | Type | Notes |
|---|---|---|
| id | bigint | Primary key |
| project_id | bigint (nullable) | Foreign key → projects |
| name | varchar | Task name |
| priority | enum(high, low) | Default: low |
| sort_order | integer | Drag-and-drop position |
| created_at | timestamp | |
| updated_at | timestamp |
Type a task name, select a priority (↑ High / ↓ Low) and optionally a project, then click + ADD.
Click the ✏️ edit icon on any task. Update the name, priority, or project inline, then click SAVE.
Click the 🗑 delete icon and confirm the prompt.
Drag any task by the ⠿ handle on the left and drop it in the new position. The order saves automatically.
- Type a project name in the bottom input of the project bar and click + PROJECT to create one.
- Click the × next to any project tab to delete it. Tasks linked to that project remain but lose their project association.
- Click a project tab to filter tasks. Click ALL to see every task.
