Skip to content

Service Dependency Map

Overview

This document provides the authoritative dependency map for the SyRF monorepo, detailing all service and library dependencies. This is critical for understanding build requirements, CI/CD workflows, and impact analysis.

Primary Source

The complete dependency map is maintained in YAML format for machine readability:

File: docs/architecture/dependency-map.yaml

Quick Reference

Service Dependencies

Service Direct Library Dependencies Port Type
API SharedKernel, Mongo.Common, AppServices, WebHostConfig, API.Messages 8080 REST API
Project Management SharedKernel, Mongo.Common, AppServices, WebHostConfig, PM.Core, PM.Core.Dtos, PM.Messages 8081 DDD Service
Quartz SharedKernel, PM.Messages 8082 Scheduler
Web None (Angular) 80 Frontend
S3 Notifier S3FileSavedNotifier.Messages N/A Lambda

Library Impact Analysis

Library Used By Impact of Changes
SharedKernel API, PM, Quartz High - affects ALL .NET services
Mongo.Common API, PM Medium - database layer
WebHostConfig API, PM Medium - web configuration
AppServices API, PM Medium - application layer
API.Messages API only Low - single service
PM Libraries PM, Quartz (Messages only) Low to Medium
S3 Messages S3 Notifier only Low - single service

Key Insights

Critical Libraries

  • SharedKernel is the most critical library - changes affect all .NET services
  • Mongo.Common is used by main services for database operations
  • No circular dependencies exist in the codebase

Independent Services

  • Web service (Angular) has no .NET dependencies
  • S3 Notifier is self-contained with minimal dependencies

Build Requirements

  • All .NET services except S3 Notifier require the full monorepo for Docker builds
  • This is due to MSBuild requirements for project references
  • Web service can build independently

Usage Guidelines

For CI/CD Workflows

Use the workflow_triggers paths from the YAML file to determine when to rebuild services.

For Docker Builds

Reference docker_context.required_paths to understand what files are needed for each service build.

For Impact Analysis

Before modifying a library, check the library_usage section to understand which services will be affected.

Validation

To validate the dependency map:

# Run the validation script
./scripts/validate-dependencies.sh

# Or validate YAML syntax
yamllint docs/architecture/dependency-map.yaml