Skip to content

Add monorepo/workspace support #93

@endavis

Description

@endavis

Problem

Template only supports single-package projects. Teams with multiple related packages must maintain separate repositories or manually configure workspaces.

Proposed Solution

Add optional monorepo configuration:

Implementation Steps

  1. Document workspace structure:

    • packages/ directory for multiple packages
    • Shared pyproject.toml at root for workspace config
    • Per-package pyproject.toml for individual packages
  2. Configure uv workspaces in root pyproject.toml:

    • [tool.uv.workspace] section
    • members = ["packages/*"]
  3. Update doit tasks to support workspaces:

    • doit test --package=name - Test specific package
    • doit test - Test all packages
    • doit build --package=name - Build specific package
  4. Shared configuration:

    • Common ruff/mypy config at root
    • Per-package overrides where needed
    • Shared dev dependencies
  5. CI updates: Matrix build for each package or unified build

  6. Create example: examples/monorepo/ showing:

    • Core library package
    • CLI package depending on core
    • Shared types package

Documentation

  • docs/advanced/monorepo.md explaining setup and tradeoffs

Success Criteria

  • Workspace configuration documented
  • doit tasks support --package flag
  • Example monorepo structure provided
  • CI handles multiple packages
  • Documentation covers monorepo setup

Additional Context

Complexity: High - Significant changes to build system and CI

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions