{{-- ── Gradient Header ─────────────────────────────────────── --}}

Projects

Manage and track your project progress

New Project
{{-- ── Stat Strip ──────────────────────────────────────────── --}} @php $totalProjects = $projects->count(); $activeProjects = $projects->where('status', 'in_progress')->count(); $doneProjects = $projects->where('status', 'completed')->count(); $overdueProjects = $projects->filter(fn($p) => $p->end_date && $p->end_date->isPast() && !in_array($p->status, ['completed','closed']))->count(); @endphp
{{ $totalProjects }}
Total
{{ $activeProjects }}
Active
{{ $doneProjects }}
Completed
{{ $overdueProjects }}
Overdue
{{-- ── Toolbar ─────────────────────────────────────────────── --}}
{{-- ── Projects ─────────────────────────────────────────────── --}} @if($projects->count() > 0) {{-- Grid --}}
@foreach($projects as $project) @php $totalTasks = $project->tasks->count(); $completedTasks = $project->tasks->where('status', 'completed')->count(); $progress = $totalTasks > 0 ? ($completedTasks / $totalTasks) * 100 : 0; $colors = ['#6366f1','#8b5cf6','#06b6d4','#10b981','#f59e0b','#ef4444','#ec4899']; $projectColor = $colors[strlen($project->name) % count($colors)]; $chipClass = match($project->status) { 'in_progress' => 'in-progress', 'completed' => 'completed', 'closed' => 'closed', default => 'not-started' }; $chipLabel = match($project->status) { 'in_progress' => 'In Progress', 'completed' => 'Completed', 'closed' => 'Closed', default => 'Not Started' }; $teamCount = $project->teamMembers ? $project->teamMembers->count() : 0; $isOverdue = $project->end_date && $project->end_date->isPast() && !in_array($project->status, ['completed','closed']); @endphp
{{ strtoupper(substr($project->name, 0, 1)) }}
{{ $project->name }}
{{ strip_tags($project->description) ?: 'No description' }}
{{ $chipLabel }} {{ round($progress) }}%
@if($project->end_date) @if($isOverdue) Overdue @else {{ $project->end_date->format('M d') }} @endif @endif @if($totalTasks > 0) {{ $completedTasks }}/{{ $totalTasks }} @endif @if($teamCount > 0)
@foreach($project->teamMembers->take(3) as $member)
{{ strtoupper(substr($member->name,0,1)) }}
@endforeach @if($teamCount > 3)
+{{ $teamCount - 3 }}
@endif
{{ $teamCount }}
@endif
@csrf @method('DELETE')
@endforeach
{{-- List --}}
Project
Due Date
Progress
Status
@foreach($projects as $project) @php $totalTasks = $project->tasks->count(); $completedTasks = $project->tasks->where('status', 'completed')->count(); $progress = $totalTasks > 0 ? ($completedTasks / $totalTasks) * 100 : 0; $colors = ['#6366f1','#8b5cf6','#06b6d4','#10b981','#f59e0b','#ef4444','#ec4899']; $projectColor = $colors[strlen($project->name) % count($colors)]; $chipClass = match($project->status) { 'in_progress'=>'in-progress','completed'=>'completed','closed'=>'closed',default=>'not-started'}; $chipLabel = match($project->status) { 'in_progress'=>'In Progress','completed'=>'Completed','closed'=>'Closed',default=>'Not Started'}; $isOverdue = $project->end_date && $project->end_date->isPast() && !in_array($project->status, ['completed','closed']); @endphp
{{ strtoupper(substr($project->name,0,1)) }}
{{ $project->name }}
@if($project->end_date) @if($isOverdue)Overdue @else {{ $project->end_date->format('M d, Y') }} @endif @else @endif
{{ round($progress) }}%
{{ $chipLabel }}
@csrf @method('DELETE')
@endforeach
@else
No projects yet

Create your first project to start organising your work.

Create Project
@endif