Files
professor/start.sh
Aodhan Collins f644937604 Initial commit — AI-powered coding tutor (Professor)
Next.js 16, React 19, Monaco editor, Anthropic SDK, multi-provider AI,
Wandbox Python execution, iframe HTML preview, SQLite auth + session persistence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 21:48:34 +00:00

70 lines
3.0 KiB
Bash

#!/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"