From 9d89b18544f679c2afeaaf16b0c70f5840bb9ede Mon Sep 17 00:00:00 2001 From: jyswee Date: Thu, 23 Jul 2026 22:14:35 +0000 Subject: [PATCH] Seed: project-management template (23 files) --- src/pages/Projects.tsx | 188 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 src/pages/Projects.tsx diff --git a/src/pages/Projects.tsx b/src/pages/Projects.tsx new file mode 100644 index 0000000..550dcf7 --- /dev/null +++ b/src/pages/Projects.tsx @@ -0,0 +1,188 @@ +import { useState } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Avatar, AvatarFallback } from "@/components/ui/avatar"; +import { Progress } from "@/components/ui/progress"; +import { + Plus, LayoutGrid, List, Calendar, MoreHorizontal, FolderKanban +} from "lucide-react"; +import { toast } from "sonner"; +import Sidebar from "@/components/Sidebar"; +import Header from "@/components/Header"; + +const projects = [ + { + id: 1, + title: "Website Redesign", + description: "Complete redesign of the main website with modern UI components and improved UX flows.", + progress: 72, + tasks: 34, + completedTasks: 24, + team: ["AK", "MR", "JL"], + teamColors: ["bg-violet-500", "bg-indigo-500", "bg-emerald-500"], + due: "Apr 28, 2026", + status: "Active", + statusColor: "bg-emerald-100 text-emerald-700", + }, + { + id: 2, + title: "Mobile App Launch", + description: "Build and launch the native mobile application for iOS and Android platforms.", + progress: 35, + tasks: 48, + completedTasks: 17, + team: ["SC", "TP", "AK"], + teamColors: ["bg-amber-500", "bg-sky-500", "bg-violet-500"], + due: "Jun 15, 2026", + status: "Active", + statusColor: "bg-emerald-100 text-emerald-700", + }, + { + id: 3, + title: "API Migration", + description: "Migrate legacy REST endpoints to GraphQL and improve API documentation.", + progress: 100, + tasks: 22, + completedTasks: 22, + team: ["MR", "JL"], + teamColors: ["bg-indigo-500", "bg-emerald-500"], + due: "Mar 30, 2026", + status: "Completed", + statusColor: "bg-slate-100 text-slate-700", + }, + { + id: 4, + title: "Design System", + description: "Establish a unified design system with reusable tokens, components, and guidelines.", + progress: 15, + tasks: 28, + completedTasks: 4, + team: ["AK", "SC", "TP"], + teamColors: ["bg-violet-500", "bg-amber-500", "bg-sky-500"], + due: "Jul 10, 2026", + status: "Planning", + statusColor: "bg-blue-100 text-blue-700", + }, + { + id: 5, + title: "QA Automation", + description: "Implement end-to-end automated testing pipeline with CI/CD integration.", + progress: 58, + tasks: 19, + completedTasks: 11, + team: ["JL", "MR"], + teamColors: ["bg-emerald-500", "bg-indigo-500"], + due: "May 5, 2026", + status: "Active", + statusColor: "bg-emerald-100 text-emerald-700", + }, + { + id: 6, + title: "Security Audit", + description: "SOC 2 compliance audit preparation and security hardening across all services.", + progress: 42, + tasks: 31, + completedTasks: 13, + team: ["TP", "SC", "AK"], + teamColors: ["bg-sky-500", "bg-amber-500", "bg-violet-500"], + due: "May 20, 2026", + status: "Active", + statusColor: "bg-emerald-100 text-emerald-700", + }, +]; + +export default function ProjectsPage() { + const [view, setView] = useState<"grid" | "list">("grid"); + + return ( +
+ +
+
+
+ {/* ── Header ── */} +
+
+

Projects

+

{projects.length} projects across your workspace

+
+
+
+ + +
+ +
+
+ + {/* ── Project Grid ── */} +
+ {projects.map((project) => ( + + +
+
+
+ +
+
+

{project.title}

+ {project.status} +
+
+ +
+ +

{project.description}

+ + {/* Progress */} +
+
+ Progress + {project.progress}% +
+ +
+ + {/* Footer */} +
+
+ {project.team.map((member, i) => ( + + {member} + + ))} +
+
+ {project.completedTasks}/{project.tasks} tasks + {project.due} +
+
+
+
+ ))} +
+
+
+
+ ); +}