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>
This commit is contained in:
69
start.sh
Normal file
69
start.sh
Normal file
@@ -0,0 +1,69 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user