website-builder-backend / frontend /scripts /17_backend_api_integration.sh
David Prince
fix: add all missing local module stubs (remote_mcp_registry, mcp_auth, mcp_transport, etc)
cce8120
Raw
History Blame Contribute Delete
2.53 kB
#!/usr/bin/env bash
set -euo pipefail
echo "[1/9] Creating API directories..."
mkdir -p services
mkdir -p hooks
mkdir -p context
mkdir -p lib
echo "[2/9] Creating environment..."
cat > .env.local <<EOC
NEXT_PUBLIC_API_URL=http://127.0.0.1:8000
NEXT_PUBLIC_WS_URL=ws://127.0.0.1:8000
NEXT_PUBLIC_MCP_URL=http://127.0.0.1:8000/api/mcp
NEXT_PUBLIC_BUILD_URL=http://127.0.0.1:8000/api/builds
EOC
echo "[3/9] Installing axios..."
npm install axios
echo "[4/9] Creating API client..."
cat > services/api.js <<'EOC'
import axios from "axios";
const api = axios.create({
baseURL:
process.env.NEXT_PUBLIC_API_URL ||
"http://127.0.0.1:8000",
timeout:60000,
headers:{
"Content-Type":"application/json"
}
});
api.interceptors.request.use(config=>{
const token=localStorage.getItem("access_token");
if(token){
config.headers.Authorization=`Bearer ${token}`;
}
return config;
});
api.interceptors.response.use(
response=>response,
error=>{
console.error(error);
return Promise.reject(error);
}
);
export default api;
EOC
echo "[5/9] Creating backend endpoint map..."
cat > services/endpoints.js <<'EOC'
export default {
health:"/health",
chat:"/api/workspace/chat/message",
history:"/api/workspace/chat/history",
session:"/api/workspace/session",
files:"/api/workspace/files",
search:"/api/ide/search",
completion:"/api/ide/completion",
generateProject:"/api/builder/generate/project",
generateComponent:"/api/builder/generate/component",
generateApi:"/api/builder/generate/api",
generateSchema:"/api/builder/generate/schema",
generatePipeline:"/api/builder/generate/pipeline",
buildStart:"/api/builds/start",
mcp:"/api/mcp/jsonrpc"
};
EOC
echo "[6/9] Creating health hook..."
cat > hooks/useBackendHealth.js <<'EOC'
import {useEffect,useState} from "react";
import api from "../services/api";
export default function useBackendHealth(){
const [online,setOnline]=useState(false);
useEffect(()=>{
let active=true;
async function check(){
try{
await api.get("/health");
if(active)setOnline(true);
}catch{
if(active)setOnline(false);
}
}
check();
const timer=setInterval(check,5000);
return()=>{
active=false;
clearInterval(timer);
};
},[]);
return online;
}
EOC
echo "[7/9] Building..."
npm run build >/dev/null
echo "[8/9] Verifying..."
test -f services/api.js
test -f services/endpoints.js
test -f hooks/useBackendHealth.js
test -f .env.local
echo "[9/9] Backend API integration complete."