Skip to content

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.