VedaMD-Backend-v2 / docs /implementation-plan /netlify-frontend-deployment.md
sniro23's picture
VedaMD Enhanced: Clean deployment with 5x Enhanced Medical RAG System
01f0120
# Netlify Frontend Deployment with Hugging Face API Integration
## Background and Motivation
The Sri Lankan Clinical Assistant's frontend needs to be deployed to Netlify while maintaining connection to our existing Hugging Face Spaces backend. This will provide a production-ready, scalable frontend hosting solution with automatic deployments.
## Branch Name
`feat/netlify-deployment`
## Key Challenges and Analysis
1. Environment Variables Management
- Need to securely handle Hugging Face API tokens
- Configure CORS settings on Hugging Face Space
- Set up environment variables in Netlify
2. API Integration
- Create API client for Hugging Face Spaces
- Handle API responses and errors
- Implement proper error handling and loading states
3. Build Configuration
- Configure Next.js for production build
- Set up Netlify build settings
- Ensure all dependencies are properly handled
## High-level Task Breakdown
### 1. Frontend API Configuration
- [ ] Create API client configuration
- Success Criteria: API client properly configured with environment variables
- Files to modify: `frontend/src/lib/api.ts`
### 2. Environment Setup
- [ ] Create environment variable files
- Success Criteria: `.env.local` and `.env.production` files created with proper variables
- Files to create:
- `frontend/.env.local`
- `frontend/.env.production`
### 3. Netlify Configuration
- [ ] Create Netlify configuration files
- Success Criteria: Netlify build settings properly configured
- Files to create:
- `frontend/netlify.toml`
### 4. CORS Configuration
- [ ] Update Hugging Face Space CORS settings
- Success Criteria: API accessible from Netlify domain
- Location: Hugging Face Space settings
### 5. Frontend Build and Test
- [ ] Test production build locally
- Success Criteria: `npm run build` succeeds without errors
- Command: `cd frontend && npm run build`
### 6. Netlify Deployment
- [ ] Deploy to Netlify
- Success Criteria: Site successfully deployed and accessible
- Steps documented in deployment section
## Project Status Board
- [ ] Task 1: Frontend API Configuration
- [ ] Task 2: Environment Setup
- [ ] Task 3: Netlify Configuration
- [ ] Task 4: CORS Configuration
- [ ] Task 5: Frontend Build and Test
- [ ] Task 6: Netlify Deployment
## Detailed Implementation Steps
### 1. Frontend API Configuration
1. Create new API client file:
```typescript
// frontend/src/lib/api.ts
const HF_API_URL = process.env.NEXT_PUBLIC_HF_API_URL;
const HF_API_TOKEN = process.env.NEXT_PUBLIC_HF_API_TOKEN;
export async function queryAPI(input: string) {
try {
const response = await fetch(HF_API_URL!, {
method: 'POST',
headers: {
'Authorization': `Bearer ${HF_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ inputs: input }),
});
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
return await response.json();
} catch (error) {
console.error('API Error:', error);
throw error;
}
}
```
### 2. Environment Setup
1. Create `.env.local`:
```env
NEXT_PUBLIC_HF_API_URL=https://your-space-name.hf.space/api/predict
NEXT_PUBLIC_HF_API_TOKEN=your_token_here
```
2. Create `.env.production`:
```env
NEXT_PUBLIC_HF_API_URL=https://your-space-name.hf.space/api/predict
```
### 3. Netlify Configuration
1. Create `netlify.toml`:
```toml
[build]
command = "npm run build"
publish = ".next"
[[plugins]]
package = "@netlify/plugin-nextjs"
[build.environment]
NEXT_USE_NETLIFY_EDGE = "true"
```
### 4. CORS Configuration
1. Add Netlify domain to Hugging Face Space CORS settings:
- Navigate to Space settings
- Add `*.netlify.app` to allowed origins
- Add your custom domain if using one
### 5. Frontend Build and Test
1. Install dependencies:
```bash
cd frontend
npm install
```
2. Test build:
```bash
npm run build
```
### 6. Netlify Deployment
1. Install Netlify CLI:
```bash
npm install -g netlify-cli
```
2. Initialize Netlify:
```bash
netlify init
```
3. Deploy:
```bash
netlify deploy --prod
```
## Executor's Feedback or Assistance Requests
- Note any build issues encountered
- Document any CORS-related problems
- Record deployment URLs and status
## Lessons Learned
- Document any issues encountered during deployment
- Note any optimizations needed
- Record successful configuration patterns