Skip to content

Create @h3ravel/contracts package for shared framework interfaces #84

@3m1n3nc3

Description

@3m1n3nc3

Description

Introduce a new @h3ravel/contracts package to house all shared interfaces, types, and contracts used across the H3ravel ecosystem.

This package will serve as the single source of truth for cross-package abstractions and must remain implementation-agnostic.


Goals

  • Decouple implementations from interfaces
  • Improve type consistency across packages
  • Avoid circular dependencies between core packages

Scope

The package may include (but is not limited to):

  • Application contracts
  • Service provider contracts
  • HTTP-related contracts (Request, Response, Middleware)
  • Queue, Event, Cache, Logger contracts
  • Filesystem and Storage contracts

Tasks

  • Create new package @h3ravel/contracts
  • Move existing shared interfaces into this package
  • Define missing core contracts where needed
  • Update dependent packages to import from @h3ravel/contracts
  • Add basic documentation explaining usage and conventions
  • Add type-only exports where applicable

Acceptance Criteria

  • No concrete implementations in this package
  • All exports are interfaces, types, or abstract classes
  • Other packages depend on contracts, not implementations
  • No runtime side effects

Difficulty

Intermediate

Metadata

Metadata

Assignees

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions