shepherd 0.0.3 copy "shepherd: ^0.0.3" to clipboard
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

10
likes
0
points
647
downloads

Publisher

unverified uploader

Weekly Downloads

A modular CLI and Dart package for DDD project management, with domain health analysis, owner management, YAML export, and changelog automation.

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation

License

unknown (license)

Dependencies

args, path, sqflite_common_ffi, yaml, yaml_writer

More

Packages that depend on shepherd