Comprehensive platform audit: security, UX, performance, and visual polish

Phase 1: Security - status transition validation, Zod tightening, DB indexes, transactions

Phase 2: Admin UX - search/filter for awards, learning, partners pages

Phase 3: Dashboard - Recent Activity feed, Pending Actions card, quick actions

Phase 4: Jury - assignments progress/urgency, autosave indicator, divergence highlighting

Phase 5: Portals - observer charts, mentor search, login/onboarding polish

Phase 6: Messages preview dialog, CsvExportDialog with column selection

Phase 7: Performance - query optimizations, loading skeletons, useDebounce hook

Phase 8: Visual - AnimatedCard, hover effects, StatusBadge, empty state CTAs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-08 22:05:01 +01:00
parent e0e4cb2a32
commit e73a676412
33 changed files with 3193 additions and 977 deletions

View File

@@ -57,6 +57,7 @@ import {
RotateCcw,
Download,
Upload,
ExternalLink,
} from 'lucide-react'
import {
DndContext,
@@ -643,7 +644,7 @@ export default function ApplySettingsPage() {
{program?.name} {program?.year}
</Link>
<span>/</span>
<span className="text-foreground">Apply Settings</span>
<span className="text-foreground">Apply Page</span>
</div>
{/* Header */}
@@ -665,6 +666,15 @@ export default function ApplySettingsPage() {
</div>
<div className="flex items-center gap-2 shrink-0 flex-wrap justify-end">
{/* View public apply page */}
{program?.slug && (
<Button variant="outline" size="sm" asChild>
<a href={`/apply/edition/${program.slug}`} target="_blank" rel="noopener noreferrer">
<ExternalLink className="mr-2 h-4 w-4" />
View Public Page
</a>
</Button>
)}
{/* Template controls */}
<Select
onValueChange={(value) => {