Hive Hive
Sign in

feat(projects): model reusable domains

GitHub issue · Closed

Metadata
Source
tuist/hive #64
Updated
Jun 24, 2026
Domains
Hive
Details

What changed

This reshapes Hive around projects as the top-level thing the instance tracks, with domains as reusable classification tags that can belong to one or more projects.

  • Added migrations and seed data for the canonical Tuist projects: Atlas, Hive, Tuist, Kura, Noora, and Once.
  • Moved GitHub repositories and project webhooks under projects, and made Grafana alerts project-scoped while keeping optional domain classification.
  • Reworked the project and domain dashboards so members can create and edit projects, link domains, link repositories, manage project webhooks, and subscribe to project drop feeds.
  • Updated drops and forage flows so filtering, feeds, classification, and rendered tables understand both projects and domains.
  • Added Model Context Protocol tools for project and domain management, including links, repositories, and project webhooks.
  • Preserved the current page when users sign in or sign out from the dashboard.
  • Aligned the project badges on domain screens with the Projects sidebar icon.

Why

Projects and domains were carrying different product meanings than the old schema allowed. Things like command-line interfaces can reasonably span more than one project, while repositories, changelog feeds, and operational webhooks belong to a concrete product or service. This model lets subscribers choose projects, domains, or both without forcing domains to be project-owned.

Root cause

The previous domain-owned model treated domains as the primary container for repositories and webhooks. That made shared domains awkward, put project-like concepts such as Compute or command-line interfaces in the wrong place, and made the drops page layout and subscription filters harder to reason about.

Approach

The change introduces a project-domain join table, keeps project-owned repositories, and migrates domain webhooks to project webhooks. Dashboard pages now expose projects as the place to connect repositories, link domains, and generate Grafana webhook addresses. Drops and forage use project context first, then domains as classification labels.

The new Model Context Protocol tools follow the dashboard authorization model: read tools use the visibility-aware project and domain queries, while write and destructive tools require an organization member.

Impact

Existing domain data is migrated into project-domain links. Grafana webhook rows are moved to projects, and Grafana alerts keep their project association with an optional domain. Operators get representative seed data for the intended Tuist project set, and agents can manage the same resources through the Model Context Protocol endpoint.

Interface screenshots

Projects page:

Projects page

Domains page:

Domains page

Validation

  • rg -n '^<<<<<<<|^=======$|^>>>>>>>' .
  • git diff --check
  • mix compile --warnings-as-errors
  • mix test with 702 passing tests
Comments

No GitHub comments yet.