Hive
refactor(projects): introduce Project as the top-level grouping above Meadow
GitHub issue · Closed
Source
tuist/hive #56
Updated
Jun 24, 2026
Domains
Hive
Stacked on top of #53 — review/merge that first. This branch targets
feat/release-update-sources-rss-feedsso the diff is just the project layer.
Summary
Introduces Project as a first-class entity above Meadow, separating the product (Tuist, Hive, Noora, Atlas, Kura) from the sub-domain within it (Cache, Generated projects, …). Projects own repositories and drop sources; meadows are optional tags within a project.
- Schema: new
projectstable withproject_idadded tomeadows,github_repositories, anddrop_sources. Themeadows_github_repositoriesmany-to-many join is removed. The migration backfills one project per existing meadow (lossless), inheriting name, description, and visibility, and moves repositories into their meadow’s project. - Classifier candidate set narrows from “every meadow attached to the repo” to “every meadow in the source’s project”. Both the drops classifier and the forage GitHub issue classifier follow the same shape, so classification stays inside product boundaries.
- Backward-compatible UX:
Meadows.create_meadow/1auto-bootstraps a project named after the meadow when noproject_idis supplied, so existing forms and seeds keep working unchanged. New code passesproject_idexplicitly to group several meadows under one project. - UI:
/projectsindex and/projects/:iddetail page (sidebar entry above Meadows)./ops/dropsmodal gains a project picker. Seeds rewritten to demonstrate the model: a Tuist project withCacheandGenerated projectssub-domain meadows, anAtlasproject with no meadows (the Kura case where the instance only cares about one product).
Testing
mix precommit(compile, format, credo, full suite: 590 tests passing)
🤖 Generated with Claude Code
No GitHub comments yet.