Add Blob Storage Infrastructure Service
Summary
Add Blob Storage as a first-class Cellix infrastructure service.
This should refine the legacy OwnerCommunity blob storage implementation into a Cellix-quality framework package, while also establishing the general pattern for how application code consumes infrastructure services through scoped contracts.
Legacy reference:
https://github.com/simnova/ownercommunity/tree/main/data-access/seedwork/services-seedwork-blob-storage-az
Goal
Create a reusable framework package:
@cellix/service-blob-storage
And an application-facing consumer package:
@ocom/service-blob-storage
The framework package should provide the general Blob Storage implementation.
The consumer package should define the application-specific contract that OwnerCommunity needs and expose only that contract to application code.
Core Requirement
Application code should not receive the full framework service API by default.
Instead, the consumer package should define the contract it needs, wrap or adapt the framework service, and expose only the approved methods through ApiContext.
This pattern should be reusable for future Cellix infrastructure services.
Scope
Update or add:
packages/cellix/service-blob-storage
packages/ocom/service-blob-storage
packages/ocom/context-spec
apps/api/src/index.ts
When working on @cellix/* packages, use the cellix-tdd skill.
Requirements
- Add
@cellix/service-blob-storage as the reusable framework package.
- Use the legacy implementation as a reference, not a direct copy.
- Support the core Blob Storage operations needed by OwnerCommunity.
- Keep Azure SDK details behind the framework package boundary.
- Add
@ocom/service-blob-storage as the application consumer package.
- Define an OwnerCommunity-specific Blob Storage contract in the consumer package.
- Ensure application code only sees the scoped consumer contract.
- Register the service in
apps/api/src/index.ts.
- Expose the scoped service on
ApiContext through @ocom/context-spec.
- Ensure the service can be used by application services, integration event handlers, Azure Functions handlers, or other application-side code that receives context.
- Add tests for the framework package, consumer package, and context/bootstrap wiring.
- Do not require live Azure resources for normal test execution.
Non-Goals
- Do not migrate every legacy blob usage in this task.
- Do not expose the full Azure SDK to application code.
- Do not hard-code OwnerCommunity behavior into the
@cellix package.
- Do not build a large new dependency injection framework unless the existing bootstrap pattern already supports it.
- Do not expose every framework method through
ApiContext by default.
Acceptance Criteria
@cellix/service-blob-storage exists and provides reusable Blob Storage infrastructure.
@ocom/service-blob-storage exists and defines the OwnerCommunity-facing Blob Storage contract.
- The consumer package adapts the framework service into the scoped application contract.
ApiContext exposes the scoped consumer contract, not the full framework service.
apps/api/src/index.ts registers the Blob Storage service.
- Tests prove framework behavior, consumer contract scoping, and bootstrap/context integration.
- Documentation briefly explains the framework package, consumer package, and scoped infrastructure contract pattern.
Add Blob Storage Infrastructure Service
Summary
Add Blob Storage as a first-class Cellix infrastructure service.
This should refine the legacy OwnerCommunity blob storage implementation into a Cellix-quality framework package, while also establishing the general pattern for how application code consumes infrastructure services through scoped contracts.
Legacy reference:
https://github.com/simnova/ownercommunity/tree/main/data-access/seedwork/services-seedwork-blob-storage-az
Goal
Create a reusable framework package:
@cellix/service-blob-storageAnd an application-facing consumer package:
@ocom/service-blob-storageThe framework package should provide the general Blob Storage implementation.
The consumer package should define the application-specific contract that OwnerCommunity needs and expose only that contract to application code.
Core Requirement
Application code should not receive the full framework service API by default.
Instead, the consumer package should define the contract it needs, wrap or adapt the framework service, and expose only the approved methods through
ApiContext.This pattern should be reusable for future Cellix infrastructure services.
Scope
Update or add:
packages/cellix/service-blob-storagepackages/ocom/service-blob-storagepackages/ocom/context-specapps/api/src/index.tsWhen working on
@cellix/*packages, use thecellix-tddskill.Requirements
@cellix/service-blob-storageas the reusable framework package.@ocom/service-blob-storageas the application consumer package.apps/api/src/index.ts.ApiContextthrough@ocom/context-spec.Non-Goals
@cellixpackage.ApiContextby default.Acceptance Criteria
@cellix/service-blob-storageexists and provides reusable Blob Storage infrastructure.@ocom/service-blob-storageexists and defines the OwnerCommunity-facing Blob Storage contract.ApiContextexposes the scoped consumer contract, not the full framework service.apps/api/src/index.tsregisters the Blob Storage service.