#!/bin/bash # One-command development script for Tesla Roadtrip # Usage: ./scripts/dev.sh # # This script now prefers your personal authenticated Grok CLI (~/.grok/bin/grok) # for local development (free + full Heavy capabilities). # The xAI API key is still used for production deploys and when FORCE_XAI_API=true. set -e echo "🚀 Starting Tesla Roadtrip development environment..." # Load .env if it exists if [ -f .env ]; then set -a source .env set +a fi # === Detect which Grok provider will be active === LOCAL_GROK_BIN="${GROK_BIN:-$HOME/.grok/bin/grok}" HAS_LOCAL_GROK=false HAS_AUTH=false if [ -x "$LOCAL_GROK_BIN" ]; then HAS_LOCAL_GROK=true fi if [ -f "$HOME/.grok/auth.json" ]; then HAS_AUTH=true fi echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if [ "$FORCE_XAI_API" = "true" ]; then echo "🔑 FORCE_XAI_API=true → Using xAI API (grok-4.3) for this session" echo " (Good for testing the exact production path locally)" elif [ "$HAS_LOCAL_GROK" = true ] && [ "$HAS_AUTH" = true ]; then echo "✅ LOCAL PERSONAL GROK CLI (Heavy)" echo " Binary : $LOCAL_GROK_BIN" echo " Auth : ~/.grok/auth.json (your personal account)" echo " Mode : web_search + high effort — free + powerful for iteration" echo "" echo " All local testing (dev.sh, iterate.sh, Playwright) will use YOUR Grok account." elif [ "$HAS_LOCAL_GROK" = true ]; then echo "âš ī¸ Local grok binary found but no ~/.grok/auth.json" echo " → Run 'grok login' in your terminal first, then restart dev.sh" echo " Falling back to xAI API (if key present)" else echo "â„šī¸ No local grok binary at $LOCAL_GROK_BIN" echo " Using xAI API instead (if XAI_API_KEY is set)" fi if [ -n "$XAI_API_KEY" ]; then echo "" echo " XAI_API_KEY is present (will be used for production + FORCE_XAI_API mode)" fi echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "Starting Backend + Frontend..." echo " Backend: http://localhost:3000" echo " Frontend: http://localhost:5173" echo "" # Run both with nice colored labels npx concurrently \ -n "BACKEND,FRONTEND" \ -c "cyan,green" \ --kill-others-on-fail \ "npm run dev:server" \ "npm --prefix client run dev"