Files
MOPC-Portal/docker/Dockerfile.dev
Matt 699248e40b 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

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"]