Skip to content

Shepherd Project Structure

devsda edited this page May 8, 2019 · 2 revisions

This wiki helps to understand project structure, and its different modules.

Module List

  • shepherd-core
  • shepherd-model
  • shepherd-client
  • shepherd-web
  • dominos-shepherd-client

Module Details

shepherd-core

This is the backbone of Shepherd backend.

  • It majorly contains
    • Web-Server, which serves Shepherd customer's requests.
    • Node Executor
    • Node Tracker

shepherd-model

Shepherd-model contains all the contract information. For example, Models, exceptions, constants, enums. This helps to sync the contract between Shepherd-core, and Shepherd-client. This is consumed by shepherd-core and shepherd-client.

shepherd-client

Shepherd-client is a SDK written in Java. Shepherd consumer can inject this module as dependency to request workflow execution from their application layer. Shepherd SDK communicates to Shepherd-Core through through REST protocol. It consumes shepherd-model as dependency, which helps to be in sync with Shepherd-Core regarding Contract.

shepherd-web

Shepherd-web is a Web portal to manage all your endpoints, CI/CD pipeline through UI. Customer can also trigger workflow(Execute/Restart/Resume/Kill) from UI. This module is written in Node JS.

dominos-shepherd-client

This is a sample module, which helps customers to write their APIs, and how to use Shepherd-SDK. Currently, we released Java SDK. Thats why, this module is in Java. It is using Jetty for its Web Server.