Real Decision

Storage Abstraction

Why file handling was hidden behind a unified storage layer.

Problem

File storage implementation should not leak into CRM, billing or communication modules, otherwise infrastructure changes become application-wide refactors.

Decision

Implemented a storage abstraction layer with pluggable drivers so services work with one interface while supporting S3-backed storage and future providers without changing business logic.

Why Not

Call provider SDKs directly from business modules.

Couple storage paths and metadata rules to application features.