build: migrate to npm workspaces and Turbo monorepo #5

Open
opened 2026-07-20 02:51:13 +02:00 by codinget · 0 comments
Owner

Goal

Convert the repository from a single package with mixed server, database, web, TUI, and tooling concerns into a real npm-workspaces monorepo orchestrated by Turbo.

Use webnet/webnet as the local reference for the root workspace manifest, root scripts, turbo.json, lockfile ownership, and CI cache integration.

Proposed direction

  • Keep npm as the only package manager and retain one root package-lock.json.
  • Add root workspaces and packageManager metadata.
  • Split independently buildable/runtime concerns into clearly named packages or apps, with an explicit package for the server entry point.
  • Move shared schemas, database interfaces/backends, and reusable UI/client code into packages according to actual dependency boundaries.
  • Use package-level scripts and turbo run from root scripts for build, typecheck, test, lint, and formatting where appropriate.
  • Encode task dependencies and outputs in turbo.json so builds and CI can cache correctly.

Acceptance criteria

  • npm ci from the repository root installs every workspace reproducibly.
  • Root build, test, typecheck, lint, and format-check commands cover all relevant workspaces.
  • Turbo task dependencies reflect real package dependencies and cache only declared outputs.
  • Existing CLI/server/TUI entry points continue to build and run from documented commands.
  • Workspace boundaries do not introduce dependency cycles or duplicate shared code.
  • CI is updated to use the workspace/Turbo structure and cache.
  • Migration and developer commands are documented.
## Goal Convert the repository from a single package with mixed server, database, web, TUI, and tooling concerns into a real npm-workspaces monorepo orchestrated by Turbo. Use `webnet/webnet` as the local reference for the root workspace manifest, root scripts, `turbo.json`, lockfile ownership, and CI cache integration. ## Proposed direction - Keep npm as the only package manager and retain one root `package-lock.json`. - Add root `workspaces` and `packageManager` metadata. - Split independently buildable/runtime concerns into clearly named packages or apps, with an explicit package for the server entry point. - Move shared schemas, database interfaces/backends, and reusable UI/client code into packages according to actual dependency boundaries. - Use package-level scripts and `turbo run` from root scripts for build, typecheck, test, lint, and formatting where appropriate. - Encode task dependencies and outputs in `turbo.json` so builds and CI can cache correctly. ## Acceptance criteria - `npm ci` from the repository root installs every workspace reproducibly. - Root build, test, typecheck, lint, and format-check commands cover all relevant workspaces. - Turbo task dependencies reflect real package dependencies and cache only declared outputs. - Existing CLI/server/TUI entry points continue to build and run from documented commands. - Workspace boundaries do not introduce dependency cycles or duplicate shared code. - CI is updated to use the workspace/Turbo structure and cache. - Migration and developer commands are documented.
codinget added the Compat/BreakingKind/EnhancementAgentic
Priority
Medium
3
labels 2026-07-20 02:51:13 +02:00
codinget added the
Agent
gpt-5.6-sol
label 2026-07-20 02:54:12 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: codinget/abode#5