Difficulty: Advanced
Type: Architecture
Background
The SDK currently communicates with GuildPass services using a single networking implementation. Future consumers may require custom transports for browser environments, React Native, Node.js, serverless platforms, testing, or mocked environments.
Separating transport concerns from SDK business logic would improve portability and extensibility.
Problem
Networking logic is tightly coupled to SDK internals, making alternative transport implementations difficult to introduce without modifying core functionality.
Expected outcome
Create a transport abstraction that allows multiple HTTP implementations to be used interchangeably while preserving the SDK's public API.
Suggested implementation
- Audit the existing networking layer.
- Define a transport interface responsible for request execution.
- Refactor SDK clients to depend on the transport abstraction.
- Provide a default HTTP implementation.
- Demonstrate custom transports for testing and non-browser environments.
- Document extension points for third-party transport implementations.
Acceptance criteria
Likely affected files/directories
src/network/, src/client/, src/config/, src/index.ts, docs/
Difficulty: Advanced
Type: Architecture
Background
The SDK currently communicates with GuildPass services using a single networking implementation. Future consumers may require custom transports for browser environments, React Native, Node.js, serverless platforms, testing, or mocked environments.
Separating transport concerns from SDK business logic would improve portability and extensibility.
Problem
Networking logic is tightly coupled to SDK internals, making alternative transport implementations difficult to introduce without modifying core functionality.
Expected outcome
Create a transport abstraction that allows multiple HTTP implementations to be used interchangeably while preserving the SDK's public API.
Suggested implementation
Acceptance criteria
Likely affected files/directories
src/network/,src/client/,src/config/,src/index.ts,docs/