open-notebook / FRONTEND_CONNECTION_GUIDE.md
baveshraam's picture
FIX: SurrealDB 2.0 migration syntax and Frontend/CORS link
f871fed

πŸš€ Frontend Connection to Hugging Face Backend

βœ… Configuration Complete!

Your Next.js frontend is now configured to connect to your Hugging Face Space backend.


πŸ“‹ Changes Made

1. βœ… Frontend Environment Configuration

Created: frontend/.env.local

NEXT_PUBLIC_API_URL=https://baveshraam-open-notebook.hf.space
INTERNAL_API_URL=https://baveshraam-open-notebook.hf.space

This tells the frontend where to find your deployed backend API.

2. βœ… API Client Already Configured

File: frontend/src/lib/api/client.ts

The API client already uses dynamic configuration:

  • βœ… Reads from process.env.NEXT_PUBLIC_API_URL
  • βœ… Falls back to auto-detection
  • βœ… Ultimate fallback to http://127.0.0.1:5055

No changes needed! The existing code will automatically use your .env.local settings.

3. βœ… CORS Configuration Updated

File: api/main.py

Updated CORS to allow requests from:

  • βœ… http://localhost:3000 (local development)
  • βœ… http://127.0.0.1:3000 (local development)
  • βœ… https://baveshraam-open-notebook.hf.space (your HF Space)
  • βœ… * (wildcard - allows any origin)

4. βœ… Hardcoded URLs Checked

All hardcoded localhost:5055 references in the frontend are:

  • βœ… Fallback defaults only (when env vars not set)
  • βœ… Example text in error messages (documentation)
  • βœ… No action needed - proper fallback behavior

🎯 Next Steps

Step 1: Deploy Backend Changes to Hugging Face

The CORS update needs to be deployed to your Hugging Face Space:

git add api/main.py
git commit -m "Update CORS for frontend connection"
git push

Wait for Hugging Face to rebuild (check the Space logs).

Step 2: Start Your Frontend Locally

cd frontend
npm install  # If not already done
npm run dev

Your frontend will start on http://localhost:3000 and connect to:

  • Backend API: https://baveshraam-open-notebook.hf.space

Step 3: Test the Connection

  1. Open browser: http://localhost:3000
  2. Check browser console for API connection messages
  3. Try creating a notebook or any API-dependent feature
  4. Check Network tab to verify requests go to your HF Space URL

πŸ” How It Works

Configuration Priority

The frontend uses a smart fallback system:

1. Runtime config from /config endpoint (uses .env.local)
   ↓
2. Build-time NEXT_PUBLIC_API_URL
   ↓
3. Auto-detection from browser URL
   ↓
4. Fallback to http://127.0.0.1:5055

Environment Variables

Variable Used By Purpose
NEXT_PUBLIC_API_URL Browser Client-side API calls
INTERNAL_API_URL Next.js Server Server-side proxying

URL Structure

The frontend automatically constructs API URLs:

  • Base URL: https://baveshraam-open-notebook.hf.space
  • API Endpoint: /api (added automatically)
  • Full API URL: https://baveshraam-open-notebook.hf.space/api

πŸ› οΈ Troubleshooting

Issue: "Failed to fetch" or CORS errors

Solution:

  1. Verify backend is running: https://baveshraam-open-notebook.hf.space/health
  2. Check backend logs for CORS rejections
  3. Ensure CORS changes were deployed (check git commit)

Issue: Frontend still connects to localhost

Solution:

  1. Verify .env.local file exists in frontend/ directory
  2. Restart Next.js dev server: npm run dev
  3. Check browser console for config messages
  4. Clear browser cache and reload

Issue: 404 errors on /api/* endpoints

Solution:

  1. Check that backend is running: https://baveshraam-open-notebook.hf.space/api/config
  2. Verify the URL doesn't have double /api/api/
  3. Check Next.js rewrite configuration in next.config.ts

πŸ“ Environment Files Reference

.env.local (active configuration)

Your current deployment settings.

.env.local.example (template)

Copy this when deploying to new environments.

.env.example (backend configuration)

Backend environment variables (already configured on HF Space).


πŸŽ‰ Success Indicators

You'll know the connection works when:

  1. βœ… Browser console shows: βœ… [Config] Successfully loaded API config
  2. βœ… Network tab shows requests to baveshraam-open-notebook.hf.space
  3. βœ… No CORS errors in browser console
  4. βœ… Features like "Create Notebook" work correctly
  5. βœ… Health check responds: https://baveshraam-open-notebook.hf.space/health

πŸš€ Deploy Frontend (Optional)

When ready to deploy your frontend:

Vercel / Netlify

Add environment variables in dashboard:

NEXT_PUBLIC_API_URL=https://baveshraam-open-notebook.hf.space
INTERNAL_API_URL=https://baveshraam-open-notebook.hf.space

Docker

docker build -t open-notebook-frontend ./frontend
docker run -p 3000:3000 \
  -e NEXT_PUBLIC_API_URL=https://baveshraam-open-notebook.hf.space \
  -e INTERNAL_API_URL=https://baveshraam-open-notebook.hf.space \
  open-notebook-frontend

πŸ“š Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Browser           β”‚
β”‚   localhost:3000    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ NEXT_PUBLIC_API_URL
           ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Hugging Face Space Backend        β”‚
β”‚   baveshraam-open-notebook.hf.space β”‚
β”‚                                     β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚   β”‚ FastAPI  β”‚ ←──→ β”‚ SurrealDBβ”‚  β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🎊 You're All Set!

Your frontend is now ready to connect to your Hugging Face deployed backend. Start the frontend with npm run dev and test away!