Context and Problem Statement
Tracker integration requires team binding, work-package mapping, sync telemetry, drift reporting, and snapshot ingestion. A separate disconnected SaaS surface would duplicate navigation and break established user flows.
SpecKitty SaaS already has connector patterns, dashboards, and activity feed conventions that users rely on.
Decision Drivers
- Preserve coherent user journey in existing app information architecture.
- Reuse mature connectors domain and webhook style patterns.
- Minimize regression risk in production dashboards/nav.
- Enable phased rollout with team-scoped flags.
Considered Options
- Build standalone tracker app area/navigation.
- Integrate tracker capability into existing
apps/connectors+ dashboard views (chosen). - Delay SaaS integration and keep tracker entirely CLI-local.
Decision Outcome
Chosen option: integrate tracker binding, snapshot ingestion, and tracker projections into existing connectors + dashboard flow.
Required Behavior
- Add tracker binding and mapping models inside
apps/connectors. - Expose tracker APIs under
/api/v1/connectors/trackers/.... - Add snapshot ingestion endpoint (
/api/v1/connectors/trackers/snapshots/) with idempotency receipts. - Render tracker health/state in existing project/work-package detail surfaces.
- Render tracker sync/drift events in existing activity feed patterns.
- Roll out via team-scoped waffle flag for SaaS tracker capability.
Consequences
Positive
- Faster adoption through familiar navigation and pages.
- Lower implementation risk through reuse of established domain boundaries.
- Better observability consistency with existing event rows/cards.
Negative
- Requires careful migration/test coverage in existing pages.
- Some model growth in connectors domain.
Neutral
- v1 is read/map/observe on SaaS side; outbound writes are deferred.
Confirmation
This decision is validated when:
- Connectors pages show tracker binding status without separate app navigation.
- Project detail includes tracker health summary.
- Work-package detail shows mapped external issue state.
- Snapshot ingestion is idempotent by receipt key.
- Existing GitHub webhook behavior remains unchanged.
Pros and Cons of the Options
Option 1: Standalone tracker app surface
Pros:
- Strong functional separation.
Cons:
- Fragmented UX and duplicate navigation.
- Higher delivery/regression risk.
Option 2: Existing connectors/dashboard integration (Chosen)
Pros:
- Cohesive user journey.
- Maximum reuse of existing patterns.
Cons:
- Tighter coupling to current page architecture.
Option 3: CLI-only tracker with no SaaS journey
Pros:
- Lowest SaaS implementation effort.
Cons:
- No team-level visibility or centralized operations.
More Information
- Connectors models and endpoints:
<spec-kitty-saas-repo>/apps/connectors/models.py<spec-kitty-saas-repo>/apps/connectors/urls.py<spec-kitty-saas-repo>/apps/connectors/views.py - Dashboard integrations:
<spec-kitty-saas-repo>/apps/web/views.py<spec-kitty-saas-repo>/templates/web/dashboards/project_detail.html<spec-kitty-saas-repo>/templates/web/dashboards/wp_detail.html