Commit Graph

128 Commits

Author SHA1 Message Date
8931da98ba Add AI eligibility toggle and include-submitted filter for awards
Some checks failed
Build and Push Docker Image / build (push) Has been cancelled
- Add useAiEligibility boolean to SpecialAward schema (default true)
- Toggle on creation form lets admins disable AI for feeling-based awards
- Detail page shows "Load All Projects" when AI is off vs "Run AI Eligibility"
- Include Submitted toggle lets admins include SUBMITTED-status projects
- Fix perPage: 200 → 100 to match user.list validation max
- Fix edition display on award detail page
- Add migration for new column

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 20:02:58 +01:00
e34cafebbf Show edition year instead of program name platform-wide
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m33s
Change program selectors and display labels from full program name
to "2026 Edition" format across admin, jury, mentor, observer, and
public pages. Selector labels changed from "Program" to "Edition".

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 19:52:52 +01:00
86d38ba743 Add delete button for draft rounds with confirmation dialog
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m26s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 19:37:54 +01:00
46694154dc Fix favicon: point to existing MOPC logo PNG instead of missing favicon.ico
Some checks failed
Build and Push Docker Image / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 19:32:55 +01:00
e57c46afdc Fix health check: use node instead of wget (not available in Alpine image)
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m41s
Also increase start_period to 60s to allow time for migrations on first boot.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 17:35:52 +01:00
afe8a58535 Fix migration: skip inviteToken columns and index that already exist in production
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m49s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 17:17:55 +01:00
90e3adfab2 Implement Prototype 1 improvements: unified members, project filters, audit expansion, filtering rounds, special awards
All checks were successful
Build and Push Docker Image / build (push) Successful in 9m9s
- Unified Member Management: merge /admin/users and /admin/mentors into /admin/members with role tabs, search, pagination
- Project List Filters: add search, multi-status filter, round/category/country selects, boolean toggles, URL persistence
- Audit Log Expansion: track logins, round state changes, evaluation submissions, file access, role changes via shared logAudit utility
- Founding Date Field: add foundedAt to Project model with CSV import support
- Filtering Round System: configurable rules (field-based, document check, AI screening), execution engine, results review with override/reinstate
- Special Awards System: named awards with eligibility criteria, dedicated jury, PICK_WINNER/RANKED/SCORED voting modes, AI eligibility
- Dashboard resilience: wrap heavy queries in try-catch to prevent error boundary on transient DB failures
- Reusable pagination component extracted to src/components/shared/pagination.tsx
- Old /admin/users and /admin/mentors routes redirect to /admin/members
- Prisma migration for all schema additions (additive, no data loss)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 16:58:29 +01:00
8fda8deded Add image cropping to avatar upload and show avatars platform-wide
All checks were successful
Build and Push Docker Image / build (push) Successful in 12m20s
- Add react-easy-crop for circular crop + zoom UI on avatar upload
- Create server-side getUserAvatarUrl utility for generating pre-signed URLs
- Update all nav components (admin, jury, mentor, observer) to show user avatars
- Add avatar URLs to user list, mentor list, and project detail API responses
- Replace initials-only avatars with UserAvatar component across admin pages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 13:19:28 +01:00
f9f88d68ab Restore EmailProvider server config required by NextAuth validation
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m6s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 14:16:31 +01:00
81db15333f Fix S3/SMTP connectivity and add one-click invite flow
Some checks failed
Build and Push Docker Image / build (push) Failing after 2m29s
- Fix MinIO port parsing bug: use protocol-appropriate defaults (443/80)
  instead of hardcoded 9000 fallback, enabling public URL endpoint
- Remove unused SMTP server config from NextAuth EmailProvider to prevent
  connection errors (sendVerificationRequest is fully overridden)
- Replace extra_hosts with DNS config (8.8.8.8) so container resolves
  mail.monaco-opc.com to public IP instead of host loopback
- Add invite token auth: single-click accept-invite flow replacing broken
  two-email invitation process
- Auto-send invitation emails on bulk user creation
- Update email template expiry text from 24 hours to 7 days

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 14:13:16 +01:00
5aedade41d Use DB settings for SMTP and unify email design to all-white
All checks were successful
Build and Push Docker Image / build (push) Successful in 7m43s
- Read SMTP settings from database (admin panel) with env var fallback
- Cache transporter and rebuild when settings change
- Remove dark blue footer from emails; use single white content box
  with logo and tagline at the bottom separated by a subtle border

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 11:49:35 +01:00
43680d4173 Log tRPC errors in all environments
Some checks failed
Build and Push Docker Image / build (push) Has been cancelled
Previously only logged in development mode, making production
debugging impossible.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 11:44:34 +01:00
fcafbaadd3 Add host.docker.internal mapping for MinIO access
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m31s
Add extra_hosts directive so the app container can reach
MinIO on the host machine via host.docker.internal.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 20:16:17 +01:00
7ff961f0c2 Fix profile photo section: replace hover overlay with button
Some checks failed
Build and Push Docker Image / build (push) Has been cancelled
Remove showEditOverlay that stretched across the full width.
Show avatar and a "Change Photo" button side by side instead.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 20:08:59 +01:00
402bdfd8c5 Add profile settings page, mentor management, and S3 email logos
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m10s
- Add universal /settings/profile page accessible to all roles with
  avatar upload, bio, phone, password change, and account deletion
- Expand updateProfile endpoint to accept bio (metadataJson), phone,
  and notification preference
- Add deleteAccount endpoint with password confirmation
- Add Profile Settings link to all nav components (admin, jury, mentor,
  observer)
- Add /admin/mentors list page and /admin/mentors/[id] detail page for
  mentor management
- Add Mentors nav item to admin sidebar
- Update email logo URLs to S3 (s3.monaco-opc.com/public/)
- Add ocean.png background image to email wrapper

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:57:12 +01:00
0c0a9b7eb5 Add round delete with confirmation dialog
All checks were successful
Build and Push Docker Image / build (push) Successful in 7m57s
- Add delete procedure to round tRPC router with cascade and audit log
- Add delete option to rounds list dropdown menu
- Show confirmation dialog with project/assignment counts before deletion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:28:57 +01:00
4c5a49cede Fix: add AUTH_TRUST_HOST for reverse proxy support
Some checks failed
Build and Push Docker Image / build (push) Has been cancelled
Auth.js v5 requires explicit trust for hosts behind a reverse proxy.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:24:25 +01:00
4071606005 Add initial Prisma migration from schema
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m27s
Generated via prisma migrate diff --from-empty for fresh DB deployment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 19:10:27 +01:00
e686a73b75 Fix: copy full node_modules into runner for prisma/seed support
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m24s
Cherry-picking individual prisma modules fails due to transitive
deps (effect, @prisma/config, etc). Copy full node_modules instead.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:51:37 +01:00
c2506edd52 Fix: prisma not found in Docker runner stage
All checks were successful
Build and Push Docker Image / build (push) Successful in 4m13s
- Use direct node path to prisma CLI instead of npx
- Copy seed dependencies (bcryptjs, papaparse, tsx, esbuild) for manual seeding
- Copy package.json for module resolution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 18:44:39 +01:00
a020d13c00 Update seed: real admin accounts, remove all dummy data
All checks were successful
Build and Push Docker Image / build (push) Successful in 4m3s
- Add matt@monaco-opc.com and admin@monaco-opc.com as SUPER_ADMIN with passwords
- Remove dummy jury members (jury1-3@example.com)
- Remove dummy sample projects
- Keep system settings, program, round, and evaluation form

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 16:40:07 +01:00
bfcfd84008 Use admin-configured AI model and add GPT-5/o-series options
All checks were successful
Build and Push Docker Image / build (push) Successful in 4m6s
- Add getConfiguredModel() that reads ai_model from SystemSettings
- AI assignment and mentor matching now use the admin-selected model
- Remove duplicate OpenAI client in mentor-matching (use shared singleton)
- Add GPT-5, GPT-5 Mini, o3, o3 Mini, o4 Mini to model dropdown

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 16:24:46 +01:00
8c598ba3ee Add email password change feature and fix nginx config
All checks were successful
Build and Push Docker Image / build (push) Successful in 4m22s
- Add public page at /email/change-password for Poste.io mailbox password management
- Add API routes for SMTP credential verification and Poste.io password change
- Rewrite nginx config as HTTP-only (certbot --nginx will add SSL)
- Add Poste.io admin API env vars to docker-compose and env templates

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 16:15:08 +01:00
d5398e93a0 Fix: remove invalid 'name' field from EvaluationForm create
All checks were successful
Build and Push Docker Image / build (push) Successful in 9m11s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:51:44 +01:00
a0016fbccb Fix: sync package-lock.json and update CLAUDE.md dev notes
Some checks failed
Build and Push Docker Image / build (push) Failing after 4m16s
Add missing @mantine/utils to lock file so npm ci works in CI.
Document that npm/node commands must also use PowerShell on Windows.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:47:00 +01:00
65ebcd3731 Fix CI: hardcode Gitea registry URL
Some checks failed
Build and Push Docker Image / build (push) Failing after 28s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:45:07 +01:00
8da7f111ef Fix CI: use REGISTRY_TOKEN secret for registry auth
Some checks failed
Build and Push Docker Image / build (push) Failing after 8s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:43:40 +01:00
a606292aaa Initial commit: MOPC platform with Docker deployment setup
Some checks failed
Build and Push Docker Image / build (push) Failing after 10s
Full Next.js 15 platform with tRPC, Prisma, PostgreSQL, NextAuth.
Includes production Dockerfile (multi-stage, port 7600), docker-compose
with registry-based image pull, Gitea Actions CI workflow, nginx config
for portal.monaco-opc.com, deployment scripts, and DEPLOYMENT.md guide.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:41:32 +01:00