Batch 1 - Quick Wins: - F1: Evaluation progress indicator with touch tracking in sticky status bar - F2: Export filtering results as CSV with dynamic AI column flattening - F3: Observer access to analytics dashboards (8 procedures changed to observerProcedure) Batch 2 - Jury Experience: - F4: Countdown timer component with urgency colors + email reminder service with cron endpoint - F5: Conflict of interest declaration system (dialog, admin management, review workflow) Batch 3 - Admin & AI Enhancements: - F6: Bulk status update UI with selection checkboxes, floating toolbar, status history recording - F7: AI-powered evaluation summary with anonymized data, OpenAI integration, scoring patterns - F8: Smart assignment improvements (geo diversity penalty, round familiarity bonus, COI blocking) Batch 4 - Form Flexibility & Applicant Portal: - F9: Evaluation form flexibility (text, boolean, section_header types, conditional visibility) - F10: Applicant portal (status timeline, per-round documents, mentor messaging) Schema: 5 new models (ReminderLog, ConflictOfInterest, EvaluationSummary, ProjectStatusHistory, MentorMessage), ProjectFile extended with roundId + isLate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
41 lines
1.1 KiB
Docker
41 lines
1.1 KiB
Docker
# =============================================================================
|
|
# MOPC Platform - Development Dockerfile (Pre-built)
|
|
# =============================================================================
|
|
|
|
FROM node:22-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Install dependencies for Prisma and development
|
|
RUN apk add --no-cache libc6-compat openssl
|
|
|
|
# Copy package files
|
|
COPY package.json package-lock.json* ./
|
|
|
|
# Install dependencies
|
|
RUN npm install && npm install tailwindcss-animate
|
|
|
|
# Copy prisma schema for generation
|
|
COPY prisma ./prisma
|
|
|
|
# Generate Prisma client
|
|
RUN npx prisma generate
|
|
|
|
# Copy the rest of the application
|
|
COPY . .
|
|
|
|
# Build the application at build time (pre-compile everything)
|
|
# Dummy env vars needed so Next.js can collect page data without MinIO throwing
|
|
ENV MINIO_ACCESS_KEY=build-placeholder
|
|
ENV MINIO_SECRET_KEY=build-placeholder
|
|
RUN npm run build
|
|
# Clear build-time placeholders (runtime uses real values from docker-compose)
|
|
ENV MINIO_ACCESS_KEY=
|
|
ENV MINIO_SECRET_KEY=
|
|
|
|
# Expose port
|
|
EXPOSE 3000
|
|
|
|
# Start production server (uses pre-built files)
|
|
CMD ["npm", "start"]
|