Hive
feat(projects): model reusable domains
GitHub issue · Closed
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:
Domains page:
Validation
rg -n '^<<<<<<<|^=======$|^>>>>>>>' .git diff --checkmix compile --warnings-as-errorsmix testwith 702 passing tests
No GitHub comments yet.