{"repo": "ahmadhassan30/anemo", "files": {"infra/scripts/setup_dev.sh": {"52f7bbdf0889cc6c2845a8266e5ee617b8d9f057": {"t": 1785745951.3337574, "n": 3144, "h": "ef513fc81ff64378", "c": "#!/bin/bash\nset -e\n\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" Anemo — Local Dev Setup\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n\n# Step 1 — Check Docker is running\necho \"[1/8] Checking Docker...\"\ndocker info > /dev/null 2>&1 || {\n echo \"ERROR: Docker is not running. Start Docker Desktop first.\"\n exit 1\n}\necho \" ✓ Docker is running\"\n\n# Step 2 — Copy env files if they don't exist\necho \"[2/8] Setting up environment files...\"\nif [ ! -f .env ]; then\n cp .env.example .env\n echo \" ✓ Created .env (root)\"\nfi\n\nif [ ! -f apps/api/.env ]; then\n cp apps/api/.env.example apps/api/.env\n echo \" ✓ Created apps/api/.env\"\n echo \" ⚠ ACTION REQUIRED: Open apps/api/.env and fill in:\"\n echo \" DEEPSEEK_API_KEY\"\n echo \" JWT_SECRET (run: openssl rand -hex 32)\"\nfi\n\nif [ ! -f apps/web/.env.local ]; then\n cp apps/web/.env.local.example apps/web/.env.local\n echo \" ✓ Created apps/web/.env.local\"\n echo \" ⚠ ACTION REQUIRED: Open apps/web/.env.local and fill in:\"\n echo \" UPLOADTHING_TOKEN\"\n echo \" NEXTAUTH_SECRET (run: openssl rand -hex 32)\"\nfi\n\n# Step 3 — Install Node dependencies\necho \"[3/8] Installing Node dependencies...\"\npnpm install\necho \" ✓ Node dependencies installed\"\n\n# Step 4 — Start Postgres and Redis first\necho \"[4/8] Starting Postgres and Redis...\"\ndocker compose -f infra/docker-compose.yml up -d postgres redis\necho \" ✓ Postgres and Redis containers started\"\n\n# Step 5 — Wait for Postgres to be ready\necho \"[5/8] Waiting for Postgres to be ready...\"\nattempt=0\nuntil docker compose -f infra/docker-compose.yml exec postgres \\\n pg_isready -U anemo > /dev/null 2>&1; do\n attempt=$((attempt + 1))\n if [ $attempt -gt 30 ]; then\n echo \"ERROR: Postgres did not become ready in 60 seconds\"\n echo \"Run: docker compose -f infra/docker-compose.yml logs postgres\"\n exit 1\n fi\n echo \" ...waiting (${attempt}/30)\"\n sleep 2\ndone\necho \" ✓ Postgres is ready\"\n\n# Step 6 — Run Alembic migrations\necho \"[6/8] Running database migrations...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n alembic upgrade head\necho \" ✓ Migrations complete\"\n\n# Step 7 — Seed demo data (idempotent — deletes and re-inserts demo users)\necho \"[7/8] Seeding demo data...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n python -m db.seed\necho \" ✓ Demo data seeded\"\n\n# Step 8 — Start all remaining services\necho \"[8/8] Starting all services...\"\ndocker compose -f infra/docker-compose.yml up -d\necho \" ✓ All services started\"\n\n# Make all scripts executable\nchmod +x infra/scripts/setup_dev.sh\nchmod +x infra/scripts/health_check.sh\nchmod +x infra/scripts/teardown.sh\n\necho \"\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" ✓ Anemo is running!\"\necho \"\"\necho \" App: http://localhost\"\necho \" API: http://localhost/api/v1\"\necho \" API Docs: http://localhost/api/v1/docs\"\necho \"\"\necho \" Demo Professor: professor@demo.com / demo1234\"\necho \" Demo Student: student@demo.com / demo1234\"\necho \"\"\necho \" NOTE: First pipeline run will download Whisper large-v3\"\necho \" (~3GB). Watch progress with: pnpm logs:worker\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n"}, "4e956679a70bc51899c21d6c704eeb2667a2328a": {"t": 1785758214.771036, "n": 3144, "h": "ef513fc81ff64378", "c": "#!/bin/bash\nset -e\n\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" Anemo — Local Dev Setup\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n\n# Step 1 — Check Docker is running\necho \"[1/8] Checking Docker...\"\ndocker info > /dev/null 2>&1 || {\n echo \"ERROR: Docker is not running. Start Docker Desktop first.\"\n exit 1\n}\necho \" ✓ Docker is running\"\n\n# Step 2 — Copy env files if they don't exist\necho \"[2/8] Setting up environment files...\"\nif [ ! -f .env ]; then\n cp .env.example .env\n echo \" ✓ Created .env (root)\"\nfi\n\nif [ ! -f apps/api/.env ]; then\n cp apps/api/.env.example apps/api/.env\n echo \" ✓ Created apps/api/.env\"\n echo \" ⚠ ACTION REQUIRED: Open apps/api/.env and fill in:\"\n echo \" DEEPSEEK_API_KEY\"\n echo \" JWT_SECRET (run: openssl rand -hex 32)\"\nfi\n\nif [ ! -f apps/web/.env.local ]; then\n cp apps/web/.env.local.example apps/web/.env.local\n echo \" ✓ Created apps/web/.env.local\"\n echo \" ⚠ ACTION REQUIRED: Open apps/web/.env.local and fill in:\"\n echo \" UPLOADTHING_TOKEN\"\n echo \" NEXTAUTH_SECRET (run: openssl rand -hex 32)\"\nfi\n\n# Step 3 — Install Node dependencies\necho \"[3/8] Installing Node dependencies...\"\npnpm install\necho \" ✓ Node dependencies installed\"\n\n# Step 4 — Start Postgres and Redis first\necho \"[4/8] Starting Postgres and Redis...\"\ndocker compose -f infra/docker-compose.yml up -d postgres redis\necho \" ✓ Postgres and Redis containers started\"\n\n# Step 5 — Wait for Postgres to be ready\necho \"[5/8] Waiting for Postgres to be ready...\"\nattempt=0\nuntil docker compose -f infra/docker-compose.yml exec postgres \\\n pg_isready -U anemo > /dev/null 2>&1; do\n attempt=$((attempt + 1))\n if [ $attempt -gt 30 ]; then\n echo \"ERROR: Postgres did not become ready in 60 seconds\"\n echo \"Run: docker compose -f infra/docker-compose.yml logs postgres\"\n exit 1\n fi\n echo \" ...waiting (${attempt}/30)\"\n sleep 2\ndone\necho \" ✓ Postgres is ready\"\n\n# Step 6 — Run Alembic migrations\necho \"[6/8] Running database migrations...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n alembic upgrade head\necho \" ✓ Migrations complete\"\n\n# Step 7 — Seed demo data (idempotent — deletes and re-inserts demo users)\necho \"[7/8] Seeding demo data...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n python -m db.seed\necho \" ✓ Demo data seeded\"\n\n# Step 8 — Start all remaining services\necho \"[8/8] Starting all services...\"\ndocker compose -f infra/docker-compose.yml up -d\necho \" ✓ All services started\"\n\n# Make all scripts executable\nchmod +x infra/scripts/setup_dev.sh\nchmod +x infra/scripts/health_check.sh\nchmod +x infra/scripts/teardown.sh\n\necho \"\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" ✓ Anemo is running!\"\necho \"\"\necho \" App: http://localhost\"\necho \" API: http://localhost/api/v1\"\necho \" API Docs: http://localhost/api/v1/docs\"\necho \"\"\necho \" Demo Professor: professor@demo.com / demo1234\"\necho \" Demo Student: student@demo.com / demo1234\"\necho \"\"\necho \" NOTE: First pipeline run will download Whisper large-v3\"\necho \" (~3GB). Watch progress with: pnpm logs:worker\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n"}, "4cdfbc481785c4d5b70c6fe052cc7c96eed69176": {"t": 1785758216.3260787, "n": 3156, "h": "2a82b8c94792c549", "c": "#!/bin/bash\nset -e\n\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" LectureOS — Local Dev Setup\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n\n# Step 1 — Check Docker is running\necho \"[1/8] Checking Docker...\"\ndocker info > /dev/null 2>&1 || {\n echo \"ERROR: Docker is not running. Start Docker Desktop first.\"\n exit 1\n}\necho \" ✓ Docker is running\"\n\n# Step 2 — Copy env files if they don't exist\necho \"[2/8] Setting up environment files...\"\nif [ ! -f .env ]; then\n cp .env.example .env\n echo \" ✓ Created .env (root)\"\nfi\n\nif [ ! -f apps/api/.env ]; then\n cp apps/api/.env.example apps/api/.env\n echo \" ✓ Created apps/api/.env\"\n echo \" ⚠ ACTION REQUIRED: Open apps/api/.env and fill in:\"\n echo \" DEEPSEEK_API_KEY\"\n echo \" JWT_SECRET (run: openssl rand -hex 32)\"\nfi\n\nif [ ! -f apps/web/.env.local ]; then\n cp apps/web/.env.local.example apps/web/.env.local\n echo \" ✓ Created apps/web/.env.local\"\n echo \" ⚠ ACTION REQUIRED: Open apps/web/.env.local and fill in:\"\n echo \" UPLOADTHING_TOKEN\"\n echo \" NEXTAUTH_SECRET (run: openssl rand -hex 32)\"\nfi\n\n# Step 3 — Install Node dependencies\necho \"[3/8] Installing Node dependencies...\"\npnpm install\necho \" ✓ Node dependencies installed\"\n\n# Step 4 — Start Postgres and Redis first\necho \"[4/8] Starting Postgres and Redis...\"\ndocker compose -f infra/docker-compose.yml up -d postgres redis\necho \" ✓ Postgres and Redis containers started\"\n\n# Step 5 — Wait for Postgres to be ready\necho \"[5/8] Waiting for Postgres to be ready...\"\nattempt=0\nuntil docker compose -f infra/docker-compose.yml exec postgres \\\n pg_isready -U lectureos > /dev/null 2>&1; do\n attempt=$((attempt + 1))\n if [ $attempt -gt 30 ]; then\n echo \"ERROR: Postgres did not become ready in 60 seconds\"\n echo \"Run: docker compose -f infra/docker-compose.yml logs postgres\"\n exit 1\n fi\n echo \" ...waiting (${attempt}/30)\"\n sleep 2\ndone\necho \" ✓ Postgres is ready\"\n\n# Step 6 — Run Alembic migrations\necho \"[6/8] Running database migrations...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n alembic upgrade head\necho \" ✓ Migrations complete\"\n\n# Step 7 — Seed demo data (idempotent — deletes and re-inserts demo users)\necho \"[7/8] Seeding demo data...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n python -m db.seed\necho \" ✓ Demo data seeded\"\n\n# Step 8 — Start all remaining services\necho \"[8/8] Starting all services...\"\ndocker compose -f infra/docker-compose.yml up -d\necho \" ✓ All services started\"\n\n# Make all scripts executable\nchmod +x infra/scripts/setup_dev.sh\nchmod +x infra/scripts/health_check.sh\nchmod +x infra/scripts/teardown.sh\n\necho \"\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" ✓ LectureOS is running!\"\necho \"\"\necho \" App: http://localhost\"\necho \" API: http://localhost/api/v1\"\necho \" API Docs: http://localhost/api/v1/docs\"\necho \"\"\necho \" Demo Professor: professor@demo.com / demo1234\"\necho \" Demo Student: student@demo.com / demo1234\"\necho \"\"\necho \" NOTE: First pipeline run will download Whisper large-v3\"\necho \" (~3GB). Watch progress with: pnpm logs:worker\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n"}, "f51492a3010e4fe3ebb52035d3636aa919fa410a": {"t": 1785758217.8667057, "n": 3108, "h": "8baed2a02870e02b", "c": "#!/bin/bash\nset -e\n\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" LectureOS — Local Dev Setup\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n\n# Step 1 — Check Docker is running\necho \"[1/8] Checking Docker...\"\ndocker info > /dev/null 2>&1 || {\n echo \"ERROR: Docker is not running. Start Docker Desktop first.\"\n exit 1\n}\necho \" ✓ Docker is running\"\n\n# Step 2 — Copy env files if they don't exist\necho \"[2/8] Setting up environment files...\"\nif [ ! -f apps/api/.env ]; then\n cp apps/api/.env.example apps/api/.env\n echo \" ✓ Created apps/api/.env\"\n echo \" ⚠ ACTION REQUIRED: Open apps/api/.env and fill in:\"\n echo \" DEEPSEEK_API_KEY\"\n echo \" JWT_SECRET (run: openssl rand -hex 32)\"\nfi\n\nif [ ! -f apps/web/.env.local ]; then\n cp apps/web/.env.local.example apps/web/.env.local\n echo \" ✓ Created apps/web/.env.local\"\n echo \" ⚠ ACTION REQUIRED: Open apps/web/.env.local and fill in:\"\n echo \" UPLOADTHING_SECRET\"\n echo \" UPLOADTHING_APP_ID\"\n echo \" NEXTAUTH_SECRET (run: openssl rand -hex 32)\"\nfi\n\n# Step 3 — Install Node dependencies\necho \"[3/8] Installing Node dependencies...\"\npnpm install\necho \" ✓ Node dependencies installed\"\n\n# Step 4 — Start Postgres and Redis first\necho \"[4/8] Starting Postgres and Redis...\"\ndocker compose -f infra/docker-compose.yml up -d postgres redis\necho \" ✓ Postgres and Redis containers started\"\n\n# Step 5 — Wait for Postgres to be ready\necho \"[5/8] Waiting for Postgres to be ready...\"\nattempt=0\nuntil docker compose -f infra/docker-compose.yml exec postgres \\\n pg_isready -U lectureos > /dev/null 2>&1; do\n attempt=$((attempt + 1))\n if [ $attempt -gt 30 ]; then\n echo \"ERROR: Postgres did not become ready in 60 seconds\"\n echo \"Run: docker compose -f infra/docker-compose.yml logs postgres\"\n exit 1\n fi\n echo \" ...waiting (${attempt}/30)\"\n sleep 2\ndone\necho \" ✓ Postgres is ready\"\n\n# Step 6 — Run Alembic migrations\necho \"[6/8] Running database migrations...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n alembic upgrade head\necho \" ✓ Migrations complete\"\n\n# Step 7 — Seed demo data (idempotent — deletes and re-inserts demo users)\necho \"[7/8] Seeding demo data...\"\ndocker compose -f infra/docker-compose.yml run --rm api \\\n python -m db.seed\necho \" ✓ Demo data seeded\"\n\n# Step 8 — Start all remaining services\necho \"[8/8] Starting all services...\"\ndocker compose -f infra/docker-compose.yml up -d\necho \" ✓ All services started\"\n\n# Make all scripts executable\nchmod +x infra/scripts/setup_dev.sh\nchmod +x infra/scripts/health_check.sh\nchmod +x infra/scripts/teardown.sh\n\necho \"\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\necho \" ✓ LectureOS is running!\"\necho \"\"\necho \" App: http://localhost\"\necho \" API: http://localhost/api/v1\"\necho \" API Docs: http://localhost/api/v1/docs\"\necho \"\"\necho \" Demo Professor: professor@demo.com / demo1234\"\necho \" Demo Student: student@demo.com / demo1234\"\necho \"\"\necho \" NOTE: First pipeline run will download Whisper large-v3\"\necho \" (~3GB). Watch progress with: pnpm logs:worker\"\necho \"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"\n"}, "53b76a4ab46080f60882e02b880c6f7b9e3cea43": {"t": 1785758219.9963307, "n": 1686, "h": "2257b2869bb927ea", "c": "#!/usr/bin/env bash\nset -euo pipefail\n\n# Determine repository root relative to this script\nSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\nREPO_ROOT=\"$( cd \"$SCRIPT_DIR/../..\" && pwd )\"\ncd \"$REPO_ROOT\"\n\necho \"=== Setting up LectureOS Local Development ===\"\n\n# 1. Copy env files idempotently\nif [ ! -f apps/api/.env ]; then\n echo \"Copying .env.example to apps/api/.env...\"\n cp .env.example apps/api/.env\nelse\n echo \"apps/api/.env already exists.\"\nfi\n\n# 2. Copy web env files idempotently\nif [ ! -f apps/web/.env.local ]; then\n echo \"Copying .env.example to apps/web/.env.local...\"\n cp .env.example apps/web/.env.local\nelse\n echo \"apps/web/.env.local already exists.\"\nfi\n\n# 3. Start database and cache services\necho \"Starting postgres and redis...\"\ndocker compose -f infra/docker-compose.yml up -d postgres redis\n\n# 4. Wait for database readiness\necho \"Waiting for postgres to initialize...\"\nsleep 5\n\n# 5. Run Alembic migrations\necho \"Running alembic migrations...\"\ncd apps/api\nDATABASE_URL=postgresql+asyncpg://lectureos:secret@localhost:5432/lectureos alembic upgrade head\n\n# 6. Seed the database with demo accounts and lectures\necho \"Running database seed...\"\nDATABASE_URL=postgresql+asyncpg://lectureos:secret@localhost:5432/lectureos python -m db.seed\n\n# Return to root and run remaining containers\ncd \"$REPO_ROOT\"\n\n\n# 7. Start remaining services (api, worker, web, nginx)\necho \"Starting all remaining LectureOS services...\"\ndocker compose -f infra/docker-compose.yml up -d\n\n# 8. Success message\necho \"====================================================\"\necho \"LectureOS running at http://localhost\"\necho \"====================================================\"\n\n"}, "4fbc01a4b6e7fd395afb650918704c87676eae2c": {"t": 1785758223.8131468, "n": 154, "h": "1b5cabf37f053088", "c": "#!/usr/bin/env bash\nset -euo pipefail\n\n# TODO: initialize local infrastructure dependencies\n\ndocker compose -f ../docker-compose.yml up -d postgres redis\n"}}}}