shepherd 0.0.3
shepherd: ^0.0.3 copied to clipboard
A modular CLI and Dart package for DDD project management, with domain health analysis, owner management, YAML export, and changelog automation.
shepherd #
Português (BR) | English | Español
A tool and package to manage DDD (Domain Driven Design) projects in Dart/Flutter, with domain health analysis, cleaning automation, YAML export, and CLI integration.
Features #
- CLI for domain health analysis
- Automatic cleaning command for multiple microfrontends (multi-packages)
- Export of results and local history
- Export of domains and owners to versionable YAML
- Owner (responsible) management per domain
- Can be used as a package for programmatic analysis
Installation #
Add to your pubspec.yaml to use as a package:
dependencies:
shepherd: ^0.0.1
Or install globally to use the CLI:
dart pub global activate shepherd
CLI Usage #
Analyze project domains #
shepherd analyze
Clean all projects/microfrontends #
shepherd clean
Clean only the current project #
shepherd clean project
Configure domains and owners (interactive) #
shepherd config
Add owner to an existing domain #
shepherd add-owner <domain>
Export domains and owners to versionable YAML #
shepherd export-yaml
# Generates the file devops/domains.yaml
Update changelog automatically #
shepherd changelog
Help #
shepherd help
Package Usage #
import 'package:shepherd/shepherd.dart';
import 'package:shepherd/src/data/shepherd_database.dart';
import 'package:shepherd/src/domain/services/config_service.dart';
import 'package:shepherd/src/domain/services/domain_info_service.dart';
import 'dart:io';
Future<void> main() async {
final projectPath = Directory.current.path;
final shepherdDb = ShepherdDatabase(projectPath);
final configService = ConfigService(shepherdDb);
final infoService = DomainInfoService(shepherdDb);
final analysisService = AnalysisService();
// Register owners
final aliceId = await shepherdDb.insertPerson(
firstName: 'Alice', lastName: 'Silva', type: 'lead_domain');
final bobId = await shepherdDb.insertPerson(
firstName: 'Bob', lastName: 'Souza', type: 'developer');
// Register domains
await configService.addDomain('auth_domain', [aliceId, bobId]);
// List domains
final domains = await infoService.listDomains();
print(domains);
// Analyze domains
final results = await analysisService.analyzeProject(projectPath);
print(results);
await shepherdDb.close();
}
Full Example #
See complete and didactic examples in the example/ folder.
YAML Export #
The shepherd export-yaml command generates a devops/domains.yaml file with all project domains and owners, ready for versioning and CI/CD integration.
Automatic Changelog & History #
The command shepherd changelog automatically updates your CHANGELOG.md with the current version and branch. When a new version is detected, the previous changelog entries are archived in dev_tools/changelog_history.md, keeping your main changelog clean and organized.
CHANGELOG.md: Always contains the latest version and recent changes.dev_tools/changelog_history.md: Stores all previous changelog entries for historical reference.
License #
MIT © 2025 Vinicius Cruvinel