4 min lecture • Guide 414 of 877
How to Manage Monorepo Development Workflows?
How to manage monorepo development workflows?
Manage monorepo workflows by using package-specific labels (pkg:frontend, pkg:api), creating tasks that identify affected packages, coordinating cross-package changes in single tasks, and tracking shared dependency updates. Document package ownership in NoteVault and set up column subscribers for package-specific notifications.
Monorepo labels
| Label | Purpose |
|---|---|
| pkg:frontend | Frontend package |
| pkg:api | API package |
| pkg:shared | Shared utilities |
| pkg:mobile | Mobile app |
| pkg:cli | CLI tool |
| cross-package | Multiple packages affected |
| shared-deps | Shared dependency change |
| release:frontend | Frontend release |
| release:api | API release |
Monorepo task template
## Feature: [Feature Name]
### Packages Affected
- [x] pkg:frontend - UI components
- [x] pkg:api - New endpoints
- [ ] pkg:shared - Utility functions
- [ ] pkg:mobile - Not affected
### Changes by Package
#### Frontend (packages/frontend)
- [ ] Add user settings page
- [ ] Connect to new API endpoints
#### API (packages/api)
- [ ] Create settings endpoints
- [ ] Add validation
### Testing Required
- [ ] Frontend unit tests
- [ ] API unit tests
- [ ] Integration tests
- [ ] E2E tests
### Reviews Required
- [ ] @frontend-owner
- [ ] @api-owner
### Release Coordination
Release order: API first, then Frontend
Reason: Frontend depends on new API endpoints
Monorepo workflow:
- Identify packages - Which packages does this affect?
- Label task - Add package labels
- Document changes - Per-package breakdown
- Assign reviewers - From each affected package
- Develop - Changes across packages
- Test all - CI tests entire monorepo
- Review - Package owners approve
- Coordinate release - Order matters
NoteVault package documentation
# Monorepo Structure
## Packages
| Package | Path | Owner | Description |
|---------|------|-------|-------------|
| frontend | packages/frontend | @frontend-team | React web app |
| api | packages/api | @backend-team | Node.js API |
| shared | packages/shared | @platform-team | Shared utilities |
| mobile | packages/mobile | @mobile-team | React Native app |
| cli | packages/cli | @platform-team | CLI tool |
## Package Dependencies
frontend → shared api → shared mobile → shared cli → shared
## Shared Dependencies
- TypeScript: 5.3.x (all packages)
- Jest: 29.x (all packages)
- ESLint: 8.x (all packages)
## Release Process
1. Shared released first if changed
2. API released before Frontend
3. Mobile can release independently
Cross-package coordination
| Scenario | Approach |
|---|---|
| Breaking change in shared | Notify all package owners |
| Feature spanning packages | Single task, multiple labels |
| Dependency update | Test all packages |
| Hotfix in one package | Can release independently |
Package ownership matrix
| Decision | Who Decides |
|---|---|
| Package architecture | Package owner |
| Shared dependency update | Platform team |
| Cross-package feature | All affected owners |
| Release timing | Release coordinator |
| Breaking changes | All affected + platform |