docs: frontend development handoff - home screen needed
- Backend API fully operational and deployed - Added comprehensive handoff document for frontend development - Includes deployment options, API integration details, and checklist - Ready for claude-web agent to build frontend home screen Job ID: MTAD-IMPL-2025-11-18-CL
This commit is contained in:
parent
cb4431eade
commit
b87ede6f3b
1 changed files with 320 additions and 0 deletions
320
backend/FRONTEND_HANDOFF.md
Normal file
320
backend/FRONTEND_HANDOFF.md
Normal file
|
|
@ -0,0 +1,320 @@
|
|||
# Frontend Development Handoff - MoreThanADiagnosis Hub
|
||||
|
||||
**Date**: 2025-11-18
|
||||
**Job ID**: MTAD-IMPL-2025-11-18-CL
|
||||
**Status**: Backend API deployment complete → Frontend needed
|
||||
**Target**: Claude-Web Agent (GitHub access)
|
||||
|
||||
---
|
||||
|
||||
## Quick Summary
|
||||
|
||||
✅ **Backend is fully operational and deployed** to `https://mtd.runfoo.run`
|
||||
|
||||
❌ **Frontend is missing** - Root path `/` currently returns 404
|
||||
|
||||
**Your task**: Build and deploy a frontend home screen + navigation
|
||||
|
||||
---
|
||||
|
||||
## Live Backend API
|
||||
|
||||
**URL**: `https://mtd.runfoo.run`
|
||||
|
||||
**Available endpoints** (already working):
|
||||
- `/health` - Health check
|
||||
- `/docs` - Swagger UI (interactive)
|
||||
- `/redoc` - ReDoc documentation
|
||||
- `/openapi.json` - OpenAPI schema
|
||||
- `/api/v1/` - All API endpoints
|
||||
|
||||
**Full API Schema**: Fetch and review `/openapi.json` for all available endpoints and methods
|
||||
|
||||
---
|
||||
|
||||
## Your Task
|
||||
|
||||
### What needs to be built:
|
||||
1. **Home/Landing Page** at `/` (currently 404)
|
||||
2. **Navigation** - Link to API docs, features, etc.
|
||||
3. **Optional**: Interactive dashboard or features that consume the backend API
|
||||
|
||||
### Constraints:
|
||||
- Must serve from root path `/`
|
||||
- HTTPS enabled (Cloudflare Flexible SSL)
|
||||
- Must work with backend API at `https://mtd.runfoo.run/api/v1`
|
||||
- CORS already configured on backend
|
||||
- Rate limiting: 100 req/min default, 10 req/sec for API endpoints
|
||||
|
||||
---
|
||||
|
||||
## Deployment Options
|
||||
|
||||
### Option 1: Static SPA (Recommended - Simplest)
|
||||
Build React/Vue/Svelte as static files, serve from nginx
|
||||
|
||||
**Advantages**: Fast, simple, no extra services
|
||||
**Location**: Frontend code in this repo, built files served by nginx
|
||||
**Steps**:
|
||||
1. Create frontend in `/frontend` directory
|
||||
2. Build to `/frontend/dist`
|
||||
3. Mount in docker-compose nginx volume
|
||||
4. Update nginx config `location /` to serve static files
|
||||
5. Commit and push
|
||||
|
||||
### Option 2: Node.js Service
|
||||
Add Node.js frontend service to docker-compose
|
||||
|
||||
**Advantages**: Dynamic rendering, SSR capable
|
||||
**Location**: Separate service in docker-compose
|
||||
**Steps**:
|
||||
1. Create `frontend/` service in docker-compose.yml
|
||||
2. Proxy `/` from nginx to frontend service
|
||||
3. Mount code as volume
|
||||
4. Test and deploy
|
||||
|
||||
### Option 3: FastAPI Static Mount
|
||||
Modify backend FastAPI to serve frontend
|
||||
|
||||
**Advantages**: Integrated, single service
|
||||
**Location**: Built files in backend app folder
|
||||
**Steps**:
|
||||
1. Add StaticFiles mount to FastAPI
|
||||
2. Build frontend static files
|
||||
3. Include in backend Docker build
|
||||
4. Deploy with existing backend
|
||||
|
||||
**Recommendation**: Start with **Option 1** (static SPA) - simplest and most performant.
|
||||
|
||||
---
|
||||
|
||||
## Integration Details
|
||||
|
||||
### Backend API
|
||||
```
|
||||
Base URL: https://mtd.runfoo.run/api/v1
|
||||
Protocol: HTTPS (via Cloudflare Flexible SSL)
|
||||
Authentication: JWT (HS256)
|
||||
CORS: Enabled (no additional headers needed)
|
||||
```
|
||||
|
||||
### Example API Call
|
||||
```javascript
|
||||
// Check health
|
||||
fetch('https://mtd.runfoo.run/health')
|
||||
.then(r => r.json())
|
||||
.then(data => console.log(data))
|
||||
|
||||
// API endpoint with auth
|
||||
fetch('https://mtd.runfoo.run/api/v1/endpoint', {
|
||||
headers: {
|
||||
'Authorization': `Bearer ${token}`,
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### Rate Limits
|
||||
- Default: 100 requests/60 seconds
|
||||
- Auth endpoints (`/api/v1/auth/`): 5 requests/second, burst 10
|
||||
- API endpoints (`/api/v1/`): 10 requests/second, burst 20
|
||||
|
||||
### Authentication
|
||||
- Algorithm: HS256
|
||||
- Access token: 15 minutes
|
||||
- Refresh token: 30 days
|
||||
- Password hashing: Argon2
|
||||
|
||||
---
|
||||
|
||||
## Current Infrastructure
|
||||
|
||||
### Backend Location
|
||||
```
|
||||
Repository: https://github.com/fullsizemalt/morethanadiagnosis-hub
|
||||
Directory: /backend (after clone)
|
||||
Language: Python, FastAPI
|
||||
Database: PostgreSQL 15
|
||||
Cache: Redis 7
|
||||
Proxy: Nginx (Alpine)
|
||||
```
|
||||
|
||||
### Docker Setup
|
||||
- **docker-compose.yml**: Orchestrates all services
|
||||
- **nginx.conf**: Reverse proxy configuration
|
||||
- **Dockerfile**: Backend image definition
|
||||
- Deployed on: nexus-vector (100.95.3.92)
|
||||
|
||||
### Current Nginx Config
|
||||
File: `/backend/nginx.conf` (lines 77-90)
|
||||
|
||||
Current root handler returns 404:
|
||||
```nginx
|
||||
location / {
|
||||
return 404;
|
||||
}
|
||||
```
|
||||
|
||||
**This needs to change** to serve your frontend
|
||||
|
||||
---
|
||||
|
||||
## Frontend Repository Structure (Suggested)
|
||||
|
||||
```
|
||||
morethanadiagnosis-hub/
|
||||
├── backend/ # (existing backend)
|
||||
│ ├── app/
|
||||
│ ├── docker-compose.yml
|
||||
│ ├── Dockerfile
|
||||
│ ├── nginx.conf
|
||||
│ └── ...
|
||||
├── frontend/ # (create this)
|
||||
│ ├── src/
|
||||
│ │ ├── components/
|
||||
│ │ ├── pages/
|
||||
│ │ ├── App.jsx
|
||||
│ │ └── index.jsx
|
||||
│ ├── public/
|
||||
│ ├── package.json
|
||||
│ ├── vite.config.js
|
||||
│ └── .gitignore
|
||||
└── README.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Implementation Checklist
|
||||
|
||||
### Planning (You)
|
||||
- [ ] Choose frontend framework (React, Vue, Svelte, plain HTML?)
|
||||
- [ ] Define home page design/layout
|
||||
- [ ] List required features
|
||||
- [ ] Pick deployment option (1, 2, or 3)
|
||||
- [ ] Review backend API schema (`/openapi.json`)
|
||||
|
||||
### Development (You)
|
||||
- [ ] Create frontend code in repo
|
||||
- [ ] Build and test locally
|
||||
- [ ] Integrate with backend API
|
||||
- [ ] Test all endpoints work
|
||||
- [ ] Ensure responsive/mobile-friendly
|
||||
|
||||
### Deployment (You)
|
||||
- [ ] Update nginx.conf for your approach
|
||||
- [ ] Update docker-compose.yml if needed
|
||||
- [ ] Build frontend
|
||||
- [ ] Test on staging/production
|
||||
- [ ] Commit changes
|
||||
- [ ] Push to GitHub
|
||||
|
||||
### Verification (Post-Deploy)
|
||||
- [ ] `https://mtd.runfoo.run/` loads home page (not 404)
|
||||
- [ ] Navigation works
|
||||
- [ ] Links to `/docs` work
|
||||
- [ ] API integration functional
|
||||
- [ ] HTTPS connection valid
|
||||
- [ ] No console errors
|
||||
|
||||
---
|
||||
|
||||
## Key Files to Modify
|
||||
|
||||
### For Static SPA (Option 1)
|
||||
1. **docker-compose.yml** - Add frontend volume mount to nginx
|
||||
2. **nginx.conf** - Change root location to serve static files
|
||||
3. **Create /frontend** - New frontend code directory
|
||||
|
||||
### For Node Service (Option 2)
|
||||
1. **docker-compose.yml** - Add frontend service definition
|
||||
2. **nginx.conf** - Add proxy_pass to frontend service
|
||||
3. **Create /frontend** - Frontend code with Node.js
|
||||
|
||||
### For FastAPI Mount (Option 3)
|
||||
1. **backend/app/main.py** - Add StaticFiles mount
|
||||
2. **Dockerfile** - Include frontend build in image
|
||||
3. **Create /frontend** - Frontend code
|
||||
|
||||
---
|
||||
|
||||
## Testing
|
||||
|
||||
### Local Frontend Testing
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev # Start dev server on localhost:5173
|
||||
```
|
||||
|
||||
### Production Testing (After Deploy)
|
||||
```bash
|
||||
# Test home page
|
||||
curl https://mtd.runfoo.run/
|
||||
|
||||
# Test API integration
|
||||
curl https://mtd.runfoo.run/health
|
||||
|
||||
# Test docs still work
|
||||
curl https://mtd.runfoo.run/docs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Reference Information
|
||||
|
||||
### Backend API Documentation
|
||||
- **Swagger**: `https://mtd.runfoo.run/docs`
|
||||
- **ReDoc**: `https://mtd.runfoo.run/redoc`
|
||||
- **OpenAPI Schema**: `https://mtd.runfoo.run/openapi.json`
|
||||
|
||||
### Backend Configuration
|
||||
- Environment: `production`
|
||||
- Debug: `false`
|
||||
- Logging: JSON format, INFO level
|
||||
- HTTPS: Cloudflare Flexible SSL
|
||||
|
||||
### CORS Configuration (Already Set)
|
||||
```
|
||||
Origins: https://mtd.runfoo.run, http://localhost:3000
|
||||
Credentials: Allowed
|
||||
Methods: All
|
||||
Headers: All
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Questions Before Starting
|
||||
|
||||
1. **Framework**: React, Vue, Svelte, or plain HTML/CSS/JS?
|
||||
2. **Complexity**: Simple landing page or feature-rich dashboard?
|
||||
3. **Design**: Any brand guidelines or mockups?
|
||||
4. **Features**: What should the home page highlight?
|
||||
5. **Deployment approach**: Static (Option 1), Node service (Option 2), or FastAPI mount (Option 3)?
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Review backend API schema at `/openapi.json`
|
||||
2. Decide on frontend framework and deployment option
|
||||
3. Create frontend code in new `/frontend` directory
|
||||
4. Implement home page and navigation
|
||||
5. Update nginx.conf and/or docker-compose.yml
|
||||
6. Build and test
|
||||
7. Commit to GitHub
|
||||
8. Deploy
|
||||
9. Verify all endpoints work end-to-end
|
||||
|
||||
---
|
||||
|
||||
## Support
|
||||
|
||||
- **Backend API Status**: `https://mtd.runfoo.run/health`
|
||||
- **Backend Docs**: `https://mtd.runfoo.run/docs`
|
||||
- **OpenAPI Schema**: `https://mtd.runfoo.run/openapi.json`
|
||||
- **Repository**: https://github.com/fullsizemalt/morethanadiagnosis-hub
|
||||
- **Deployment**: nexus-vector (100.95.3.92)
|
||||
|
||||
---
|
||||
|
||||
**Backend is ready. Frontend is your turn.**
|
||||
Loading…
Add table
Reference in a new issue