Abstractions¶
Purpose¶
Owns lightweight contracts and integration seams used throughout Snap Studio Pro.
This territory contains focused interfaces that reduce direct coupling between workflow systems, rendering helpers, preview systems, export systems, and editor tooling.
Owns¶
- Workflow-facing contracts
- Rendering abstractions
- Capture abstractions
- Preview-facing integration seams
- Thumbnail generation contracts
- UI-facing lightweight interfaces
- Shared editor-domain contracts
Does NOT Own¶
- Workflow orchestration
- Rendering implementation
- Preview lifecycle ownership
- Export execution
- Panel UI layout ownership
- Business logic implementation
Allowed Dependencies¶
Abstractions should remain lightweight and should depend only on:
- Unity primitives/types
- Lightweight shared models/contracts where necessary
Abstractions should avoid depending on:
- concrete workflow systems
- rendering implementations
- preview orchestration systems
- panel/UI orchestration systems
Notes¶
This folder exists to expose meaningful integration seams without introducing unnecessary abstraction layers.
Interfaces here should represent: - real dependency boundaries - reusable integration points - implementation isolation where it genuinely improves maintainability
Avoid: - interface duplication - abstraction for architectural aesthetics - mirroring entire implementations through contracts
The goal is pragmatic decoupling, not framework theatre.
Future Candidates¶
- Keep abstractions lightweight and stable.
- Avoid introducing contracts without a meaningful ownership boundary.
- Continue preferring practical integration seams over excessive abstraction layering.