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

@@ -613,6 +613,7 @@ model ProjectFile {
@@unique([bucket, objectKey])
@@index([projectId])
@@index([roundId])
@@index([projectId, roundId])
@@index([fileType])
}
@@ -651,6 +652,7 @@ model Assignment {
@@index([projectId])
@@index([roundId])
@@index([isCompleted])
@@index([projectId, userId])
}
model Evaluation {
@@ -1339,6 +1341,13 @@ model SpecialAward {
sortOrder Int @default(0)
// Eligibility job tracking
eligibilityJobStatus String? // PENDING, PROCESSING, COMPLETED, FAILED
eligibilityJobTotal Int? // total projects to process
eligibilityJobDone Int? // completed so far
eligibilityJobError String? @db.Text // error message if failed
eligibilityJobStarted DateTime? // when job started
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@ -1379,6 +1388,7 @@ model AwardEligibility {
@@index([awardId])
@@index([projectId])
@@index([eligible])
@@index([awardId, eligible])
}
model AwardJuror {