Overview
Thelibrechat-data-provider package is a shared TypeScript library used by both frontend and backend for:
- API endpoints - URL construction
- Data service - HTTP request wrappers
- Type definitions - Shared types and schemas
- Query/Mutation keys - React Query key constants
packages/data-provider/
Package Structure
API Endpoints
Frompackages/data-provider/src/api-endpoints.ts:1:
Endpoint Builders
Example Endpoints
- Always use
encodeURIComponentfor dynamic URL parameters - Use
buildQueryhelper for query strings - Return absolute URLs from endpoint functions
Data Service
Frompackages/data-provider/src/data-service.ts:1:
HTTP Request Functions
Request Wrapper
Therequest object (from request.ts) is an Axios instance with interceptors:
Type Definitions
Types are organized inpackages/data-provider/src/types/:
Query Types
Frompackages/data-provider/src/types/queries.ts:
Mutation Types
Frompackages/data-provider/src/types/mutations.ts:
Shared Schemas
Frompackages/data-provider/src/schemas.ts:
Using Data Provider in Frontend
1. Import from data-provider
2. Create Query Hook
Fromclient/src/data-provider/Messages/queries.ts:1:
3. Export from Feature Module
4. Use in Component
Adding New Endpoints
1. Add Endpoint to api-endpoints.ts
2. Add Type Definitions
3. Add Data Service Function
4. Add Query Key
5. Create Query Hook
6. Rebuild Package
After making changes topackages/data-provider:
Query Key Organization
Frompackages/data-provider/src/keys.ts:1:
- Singular for single items:
agent,conversation - Plural for lists:
agents,messages - Descriptive prefixes:
all,archived,marketplace - Dynamic keys for parameterized queries
Best Practices
Type Safety
Error Handling
Request Cancellation
Next Steps
- State Management - React Query integration patterns
- Components - Using queries in components
- Backend Development - Creating matching API endpoints