#!/usr/bin/env bash set -e cd "$(dirname "$0")" # ─── Colours ────────────────────────────────────────────────────────────────── BOLD='\033[1m' DIM='\033[2m' GREEN='\033[0;32m' YELLOW='\033[0;33m' RED='\033[0;31m' CYAN='\033[0;36m' RESET='\033[0m' echo "" echo -e "${BOLD} Professor — AI Coding Tutor${RESET}" echo -e "${DIM} ─────────────────────────────${RESET}" echo "" # ─── Check Node ─────────────────────────────────────────────────────────────── if ! command -v node &>/dev/null; then echo -e "${RED} ✗ Node.js is not installed. Please install Node.js 18+ and try again.${RESET}" exit 1 fi NODE_VERSION=$(node -e "process.stdout.write(process.version.slice(1).split('.')[0])") if [ "$NODE_VERSION" -lt 18 ]; then echo -e "${RED} ✗ Node.js 18+ required (found v${NODE_VERSION}).${RESET}" exit 1 fi # ─── Check npm deps ─────────────────────────────────────────────────────────── if [ ! -d "node_modules" ]; then echo -e "${YELLOW} ⚙ node_modules not found — installing dependencies…${RESET}" npm install --silent echo -e "${GREEN} ✓ Dependencies installed${RESET}" else echo -e "${GREEN} ✓ Dependencies ready${RESET}" fi # ─── Check .env.local ───────────────────────────────────────────────────────── if [ ! -f ".env.local" ]; then echo -e "${YELLOW} ⚠ .env.local not found — creating it now${RESET}" echo "ANTHROPIC_API_KEY=your_api_key_here" > .env.local fi ANTHROPIC_KEY=$(grep -E "^ANTHROPIC_API_KEY=" .env.local | cut -d= -f2- | tr -d '[:space:]') if [ -z "$ANTHROPIC_KEY" ] || [ "$ANTHROPIC_KEY" = "your_api_key_here" ]; then echo "" echo -e "${YELLOW} ⚠ No Anthropic API key found in .env.local${RESET}" echo -e "${DIM} You can still use OpenRouter, LM Studio, or Ollama via the${RESET}" echo -e "${DIM} provider settings in the app. To use Claude, add your key:${RESET}" echo "" echo -e "${DIM} ANTHROPIC_API_KEY=sk-ant-… → .env.local${RESET}" echo "" else echo -e "${GREEN} ✓ Anthropic API key found${RESET}" fi # ─── Launch ─────────────────────────────────────────────────────────────────── PORT=${PORT:-3000} echo "" echo -e "${CYAN} ➜ Starting dev server on http://localhost:${PORT}${RESET}" echo -e "${DIM} Press Ctrl+C to stop${RESET}" echo "" exec npm run dev -- --port "$PORT"