2026-01-30 13:41:32 +01:00
|
|
|
# =============================================================================
|
|
|
|
|
# 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)
|
Implement 10 platform features: evaluation UX, admin tools, AI summaries, applicant portal
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>
2026-02-05 21:58:27 +01:00
|
|
|
# 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
|
2026-01-30 13:41:32 +01:00
|
|
|
RUN npm run build
|
Implement 10 platform features: evaluation UX, admin tools, AI summaries, applicant portal
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>
2026-02-05 21:58:27 +01:00
|
|
|
# Clear build-time placeholders (runtime uses real values from docker-compose)
|
|
|
|
|
ENV MINIO_ACCESS_KEY=
|
|
|
|
|
ENV MINIO_SECRET_KEY=
|
2026-01-30 13:41:32 +01:00
|
|
|
|
|
|
|
|
# Expose port
|
|
|
|
|
EXPOSE 3000
|
|
|
|
|
|
|
|
|
|
# Start production server (uses pre-built files)
|
|
|
|
|
CMD ["npm", "start"]
|