# Backend API Requirements for MVP1 This document lists all backend API endpoints required by the admin-ui components. These endpoints need to be implemented in the FastAPI backend (`/tools/api/server.py`). ## Status: Missing Endpoints The following endpoints are called by frontend components but not yet implemented in the backend: --- ## 1. Projects API ### GET `/api/projects` **Used by:** `ds-project-selector.js` **Purpose:** Fetch list of all available projects **Request:** None **Response:** ```json [ { "id": "project-id", "name": "Project Name", "description": "Project description", "storybook_url": "https://storybook.example.com", "figma_ui_file": "https://figma.com/file/abc123", "figma_ux_file": "https://figma.com/file/def456", "figma_qa_file": "https://figma.com/file/ghi789", "live_url": "https://app.example.com", "git_repo": "https://github.com/org/repo", "esre": "# ESRE content..." } ] ``` ### GET `/api/projects/{project_id}` **Used by:** Multiple comparison tools **Purpose:** Fetch single project configuration **Request:** Path parameter `project_id` **Response:** Same as single project object above ### GET `/api/projects/{project_id}/esre` **Used by:** `ds-esre-editor.js` **Purpose:** Fetch ESRE (style requirements) for project **Request:** Path parameter `project_id` **Response:** ```json { "content": "# ESRE markdown content..." } ``` --- ## 2. Test Runner API ### POST `/api/test/run` **Used by:** `ds-test-results.js` **Purpose:** Execute npm test command and return parsed results **Request:** ```json { "projectId": "project-id", "testCommand": "npm test" } ``` **Response:** ```json { "summary": { "total": 45, "passed": 42, "failed": 2, "skipped": 1, "duration": 2.341 }, "suites": [ { "name": "Suite Name", "tests": [ { "name": "test description", "status": "passed|failed|skipped", "duration": 0.123, "error": "error message if failed" } ] } ], "coverage": { "lines": 85, "functions": 90, "branches": 75, "statements": 85 } } ``` --- ## 3. Regression Testing API ### POST `/api/regression/run` **Used by:** `ds-regression-testing.js` **Purpose:** Run visual regression tests between baseline and current **Request:** ```json { "projectId": "project-id", "baselineUrl": "https://baseline.example.com", "compareUrl": "https://current.example.com" } ``` **Response:** ```json { "summary": { "passed": 15, "failed": 3, "total": 18 }, "diffs": [ { "component": "Button", "hasDifference": true, "diffPercentage": 2.5, "baselineImage": "/screenshots/baseline/button.png", "currentImage": "/screenshots/current/button.png", "diffImage": "/screenshots/diff/button.png" } ] } ``` --- ## 4. Assets API ### GET `/api/assets/list` **Used by:** `ds-asset-list.js` **Purpose:** List all design assets (icons, images) for project **Request:** Query parameter `projectId` **Response:** ```json { "assets": [ { "id": "asset-1", "name": "icon-home.svg", "type": "icon", "url": "/assets/icons/home.svg", "thumbnailUrl": "/assets/thumbs/home.png", "size": "2.3 KB" } ] } ``` --- ## 5. Navigation Demos API ### POST `/api/navigation/generate` **Used by:** `ds-navigation-demos.js` **Purpose:** Generate HTML navigation flow demos **Request:** ```json { "projectId": "project-id", "flowName": "User Onboarding" } ``` **Response:** ```json { "url": "/demos/user-onboarding.html", "thumbnailUrl": "/demos/thumbs/user-onboarding.png" } ``` --- ## 6. Figma Export API ### POST `/api/figma/export-assets` **Used by:** `ds-figma-plugin.js` **Purpose:** Export assets from Figma file **Request:** ```json { "projectId": "project-id", "fileKey": "abc123def456", "format": "svg|png|jpg" } ``` **Response:** ```json { "count": 25, "assets": { "icon-home": "/exports/icon-home.svg", "icon-user": "/exports/icon-user.svg" } } ``` ### POST `/api/figma/export-components` **Used by:** `ds-figma-plugin.js` **Purpose:** Export component definitions from Figma **Request:** ```json { "projectId": "project-id", "fileKey": "abc123def456", "format": "json|react" } ``` **Response:** ```json { "count": 12, "components": { "Button": { "variants": ["primary", "secondary"], "props": ["size", "disabled"] } } } ``` --- ## 7. QA Screenshot API ### POST `/api/qa/screenshot-compare` **Used by:** `ds-figma-live-compare.js` **Purpose:** Take screenshots of Figma and live for comparison **Request:** ```json { "projectId": "project-id", "figmaUrl": "https://figma.com/...", "liveUrl": "https://app.example.com/..." } ``` **Response:** ```json { "figmaScreenshot": "/screenshots/figma-123.png", "liveScreenshot": "/screenshots/live-123.png" } ``` --- ## 8. ESRE Save API ### POST `/api/esre/save` **Used by:** `ds-esre-editor.js` **Purpose:** Save ESRE (style requirements) content **Request:** ```json { "projectId": "project-id", "content": "# ESRE markdown content..." } ``` **Response:** ```json { "success": true, "savedAt": "2025-01-15T10:30:00Z" } ``` --- ## Implementation Notes ### Priority Order 1. **Critical (Blocking MVP1):** - `/api/projects` - Required for project selection - `/api/projects/{id}` - Required for tool configuration 2. **High Priority (Core Features):** - `/api/test/run` - Test results viewer - `/api/esre/save` - ESRE editor 3. **Medium Priority (Team Tools):** - `/api/regression/run` - Visual regression testing - `/api/figma/export-assets` - Figma asset export - `/api/figma/export-components` - Figma component export 4. **Low Priority (Nice to Have):** - `/api/assets/list` - Asset list viewer - `/api/navigation/generate` - Navigation demos - `/api/qa/screenshot-compare` - QA screenshots ### Implementation Strategy 1. **Add to FastAPI server** (`/tools/api/server.py`): ```python @app.get("/api/projects") async def list_projects(): # Implementation pass ``` 2. **Use existing MCP tools where possible:** - Token extraction → `dss_extract_tokens` - Project analysis → `dss_analyze_project` - Component audit → `dss_audit_components` 3. **Add project configuration storage:** - Use JSON files in `/projects/{id}/config.json` - Or use SQLite database for persistence 4. **Implement test runner:** - Use `subprocess` to execute `npm test` - Parse Jest/test output - Return structured results ### Fallback Strategy For MVP1 release, if backend endpoints are not ready: - Components will show empty states with helpful error messages - localStorage caching will preserve user data - All components gracefully handle missing endpoints - Project selector falls back to hardcoded 'admin-ui' project --- ## Current Status ✅ **Implemented:** - MCP tool execution via `/api/mcp/tools/{tool_name}/execute` - All DSS MCP tools (tokens, analysis, audit, etc.) - Browser automation tools via plugin ❌ **Missing:** - All 8 endpoint groups listed above - Project CRUD operations - Test runner integration - Asset management - ESRE persistence **Estimated Implementation Time:** 4-6 hours for all endpoints --- Last updated: 2025-01-15