## ADDED Requirements ### Requirement: API client handles all backend endpoints The system SHALL provide a typed HTTP client for all backend API endpoints. #### Scenario: GET request - **WHEN** the client calls api.get('/projects') - **THEN** it sends a GET request to /api/v1/projects - **AND** returns typed Project[] data - **AND** includes the Authorization header with the current access token #### Scenario: POST request - **WHEN** the client calls api.post('/projects', data) - **THEN** it sends a POST request with JSON body - **AND** returns typed Project data #### Scenario: Error handling - **WHEN** a request returns 4xx or 5xx - **THEN** the client throws an ApiError with status code and message - **AND** the error can be caught and displayed to the user ### Requirement: API client supports request/response types The system SHALL use TypeScript interfaces matching the backend Pydantic schemas. #### Scenario: Type safety - **WHEN** a developer uses the API client - **THEN** request and response types are checked at compile time - **AND** mismatches produce TypeScript errors