From 406ec46c81dd21a7c2227bbbb245d6ef07817c86 Mon Sep 17 00:00:00 2001
From: Matt
Date: Tue, 3 Feb 2026 10:50:47 +0100
Subject: [PATCH] UI simplification: remove redundant pages, reorganize Quick
Actions
Phase 2 UI Cleanup:
- Delete empty programs/[id]/settings page
- Delete redundant projects/[id]/assignments page (use round-level management)
- Delete unused /users redirect directory
- Remove Settings button from program detail page
- Reorganize Round Quick Actions into visual groups (Project Management, Round Management)
Note: Mentor inline assignment deferred - the existing mentor page has
complex AI suggestion functionality that would need careful refactoring.
Co-Authored-By: Claude Opus 4.5
---
src/app/(admin)/admin/programs/[id]/page.tsx | 22 +--
.../admin/programs/[id]/settings/page.tsx | 83 --------
.../admin/projects/[id]/assignments/page.tsx | 177 ------------------
src/app/(admin)/admin/rounds/[id]/page.tsx | 87 +++++----
src/app/(admin)/admin/users/[id]/page.tsx | 10 -
src/app/(admin)/admin/users/invite/page.tsx | 5 -
src/app/(admin)/admin/users/page.tsx | 5 -
7 files changed, 56 insertions(+), 333 deletions(-)
delete mode 100644 src/app/(admin)/admin/programs/[id]/settings/page.tsx
delete mode 100644 src/app/(admin)/admin/projects/[id]/assignments/page.tsx
delete mode 100644 src/app/(admin)/admin/users/[id]/page.tsx
delete mode 100644 src/app/(admin)/admin/users/invite/page.tsx
delete mode 100644 src/app/(admin)/admin/users/page.tsx
diff --git a/src/app/(admin)/admin/programs/[id]/page.tsx b/src/app/(admin)/admin/programs/[id]/page.tsx
index 473e7c1..b864673 100644
--- a/src/app/(admin)/admin/programs/[id]/page.tsx
+++ b/src/app/(admin)/admin/programs/[id]/page.tsx
@@ -18,7 +18,7 @@ import {
TableHeader,
TableRow,
} from '@/components/ui/table'
-import { ArrowLeft, Pencil, Plus, Settings } from 'lucide-react'
+import { ArrowLeft, Pencil, Plus } from 'lucide-react'
import { formatDateOnly } from '@/lib/utils'
interface ProgramDetailPageProps {
@@ -64,20 +64,12 @@ export default async function ProgramDetailPage({ params }: ProgramDetailPagePro
-
-
-
-
+
{program.description && (
diff --git a/src/app/(admin)/admin/programs/[id]/settings/page.tsx b/src/app/(admin)/admin/programs/[id]/settings/page.tsx
deleted file mode 100644
index 4e0bd29..0000000
--- a/src/app/(admin)/admin/programs/[id]/settings/page.tsx
+++ /dev/null
@@ -1,83 +0,0 @@
-'use client'
-
-import { useParams } from 'next/navigation'
-import Link from 'next/link'
-import { trpc } from '@/lib/trpc/client'
-import { Button } from '@/components/ui/button'
-import {
- Card,
- CardContent,
- CardDescription,
- CardHeader,
- CardTitle,
-} from '@/components/ui/card'
-import { Skeleton } from '@/components/ui/skeleton'
-import { ArrowLeft } from 'lucide-react'
-
-export default function ProgramSettingsPage() {
- const params = useParams()
- const id = params.id as string
-
- const { data: program, isLoading } = trpc.program.get.useQuery({ id })
-
- if (isLoading) {
- return (
-
- )
- }
-
- return (
-
-
-
-
-
-
-
Program Settings
-
- Configure settings for {program?.name}
-
-
-
-
-
-
- Program Configuration
-
- Advanced settings for this program
-
-
-
-
- Program-specific settings will be available in a future update.
-
- For now, manage rounds and projects through the program detail page.
-
-
-
-
-
-
-
- )
-}
diff --git a/src/app/(admin)/admin/projects/[id]/assignments/page.tsx b/src/app/(admin)/admin/projects/[id]/assignments/page.tsx
deleted file mode 100644
index 7e6d4c6..0000000
--- a/src/app/(admin)/admin/projects/[id]/assignments/page.tsx
+++ /dev/null
@@ -1,177 +0,0 @@
-'use client'
-
-import { useParams } from 'next/navigation'
-import Link from 'next/link'
-import { trpc } from '@/lib/trpc/client'
-import { Button } from '@/components/ui/button'
-import { Badge } from '@/components/ui/badge'
-import {
- Card,
- CardContent,
- CardDescription,
- CardHeader,
- CardTitle,
-} from '@/components/ui/card'
-import {
- Table,
- TableBody,
- TableCell,
- TableHead,
- TableHeader,
- TableRow,
-} from '@/components/ui/table'
-import { Skeleton } from '@/components/ui/skeleton'
-import {
- AlertDialog,
- AlertDialogAction,
- AlertDialogCancel,
- AlertDialogContent,
- AlertDialogDescription,
- AlertDialogFooter,
- AlertDialogHeader,
- AlertDialogTitle,
- AlertDialogTrigger,
-} from '@/components/ui/alert-dialog'
-import { ArrowLeft, Plus, UserMinus } from 'lucide-react'
-import { toast } from 'sonner'
-
-export default function ProjectAssignmentsPage() {
- const params = useParams()
- const id = params.id as string
-
- const { data: project, isLoading: projectLoading } = trpc.project.get.useQuery({ id })
- const { data: assignments = [], isLoading: assignmentsLoading } = trpc.assignment.listByProject.useQuery({ projectId: id })
-
- const utils = trpc.useUtils()
-
- const removeAssignment = trpc.assignment.delete.useMutation({
- onSuccess: () => {
- toast.success('Assignment removed')
- utils.assignment.listByProject.invalidate({ projectId: id })
- },
- onError: (error) => {
- toast.error(error.message || 'Failed to remove assignment')
- },
- })
-
- // Remove handled via AlertDialog in JSX
-
- const isLoading = projectLoading || assignmentsLoading
-
- if (isLoading) {
- return (
-
- )
- }
-
- return (
-
-
-
-
-
-
-
-
Jury Assignments
-
- {project?.title}
-
-
-
-
-
-
-
-
- Assigned Jury Members
-
- {assignments.length} jury member{assignments.length !== 1 ? 's' : ''} assigned to evaluate this project
-
-
-
- {assignments.length === 0 ? (
-
- No jury members assigned yet.
-
- ) : (
-
-
-
- Jury Member
- Status
- Actions
-
-
-
- {assignments.map((assignment) => (
-
-
-
-
{assignment.user.name}
-
{assignment.user.email}
-
-
-
-
- {assignment.evaluation?.status || 'Pending'}
-
-
-
-
-
-
-
-
-
- Remove Assignment
-
- Remove this jury member from the project? Their evaluation data will also be deleted.
-
-
-
- Cancel
- removeAssignment.mutate({ id: assignment.id })}>
- Remove
-
-
-
-
-
-
- ))}
-
-
- )}
-
-
-
- )
-}
diff --git a/src/app/(admin)/admin/rounds/[id]/page.tsx b/src/app/(admin)/admin/rounds/[id]/page.tsx
index 4881c60..f52f2fe 100644
--- a/src/app/(admin)/admin/rounds/[id]/page.tsx
+++ b/src/app/(admin)/admin/rounds/[id]/page.tsx
@@ -602,46 +602,57 @@ function RoundDetailContent({ roundId }: { roundId: string }) {
Quick Actions
-
-
-
- {!isFilteringRound && (
-