UI overhaul applying jury dashboard design patterns across all pages: - Stat cards with border-l-4 accent + icon pills on admin, observer, mentor, applicant dashboards and reports - Card section headers with color-coded icon pills throughout - Hover lift effects (translate-y + shadow) on cards and list items - Gradient progress bars (brand-teal to brand-blue) platform-wide - AnimatedCard stagger animations on all dashboard sections - Auth pages with gradient accent strip and polished icon containers - EmptyState component upgraded with rounded icon pill containers - Replaced AI-looking icons (Brain/Sparkles/Bot/Wand2/Cpu) with descriptive alternatives across 12 files - Removed gradient overlay from jury dashboard header - Quick actions restyled as card links with group hover effects Backend improvements: - Team member invite emails with account setup flow and notification logging - Analytics routers accept edition-wide queries (programId) in addition to roundId - Round detail endpoint returns inline progress data (eliminates extra getProgress call) - Award voting endpoints parallelized with Promise.all - Bulk invite supports optional sendInvitation flag - AwardVote composite index migration for query performance Infrastructure: - Docker entrypoint with migration retry loop (configurable retries/delay) - docker-compose pull_policy: always for automatic image refresh - Simplified deploy/update scripts using docker compose up -d --pull always - Updated deployment documentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
46 lines
1.4 KiB
Bash
46 lines
1.4 KiB
Bash
#!/bin/bash
|
|
# =============================================================================
|
|
# MOPC Platform - Update / Redeploy Script
|
|
# =============================================================================
|
|
# Usage: ./scripts/update.sh
|
|
# Pulls the latest image from the registry and restarts the app.
|
|
# PostgreSQL is NOT restarted.
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
DOCKER_DIR="$PROJECT_DIR/docker"
|
|
|
|
echo "============================================"
|
|
echo " MOPC Platform - Update"
|
|
echo "============================================"
|
|
echo ""
|
|
|
|
# 1. Pull and recreate app only (postgres stays running)
|
|
echo "==> Pulling latest image and recreating app..."
|
|
cd "$DOCKER_DIR"
|
|
docker compose up -d --pull always --force-recreate app
|
|
|
|
# 2. Wait for health check
|
|
echo "==> Waiting for application to start..."
|
|
MAX_WAIT=120
|
|
WAITED=0
|
|
while [ $WAITED -lt $MAX_WAIT ]; do
|
|
if curl -sf http://localhost:7600/api/health > /dev/null 2>&1; then
|
|
echo ""
|
|
echo "============================================"
|
|
echo " Update complete! App is healthy."
|
|
echo "============================================"
|
|
exit 0
|
|
fi
|
|
sleep 2
|
|
WAITED=$((WAITED + 2))
|
|
printf "."
|
|
done
|
|
|
|
echo ""
|
|
echo "WARNING: Application did not become healthy within ${MAX_WAIT}s."
|
|
echo "Check logs: cd $DOCKER_DIR && docker compose logs -f app"
|
|
exit 1
|