README

shipping

This example demonstrates a more real-world application consisting of multiple services.

Description

The implementation is based on the container shipping domain from the Domain Driven Design book by Eric Evans, which was originally implemented in Java but has since been ported to Go. This example is a somewhat stripped down version to demonstrate the use of Go kit. The original Go application is maintained separately and accompanied by an AngularJS application as well as a mock routing service.

Organization

The application consists of three application services, booking, handling and tracking. Each of these is an individual Go kit service as seen in previous examples.

  • booking - used by the shipping company to book and route cargos.
  • handling - used by our staff around the world to register whenever the cargo has been received, loaded etc.
  • tracking - used by the customer to track the cargo along the route

There are also a few pure domain packages that contain some intricate business-logic. They provide domain objects and services that are used by each application service to provide interesting use-cases for the user.

inmem contains in-memory implementations for the repositories found in the domain packages.

The routing package provides a domain service that is used to query an external application for possible routes.

Contributing

As with all Go kit examples you are more than welcome to contribute. If you do however, please consider contributing back to the original project as well.

Documentation

The Go Gopher

There is no documentation for this package.

Source Files

Directories

Path Synopsis
Package booking provides the use-case of booking a cargo.
Package booking provides the use-case of booking a cargo.
Package cargo contains the heart of the domain model.
Package cargo contains the heart of the domain model.
Package handling provides the use-case for registering incidents.
Package handling provides the use-case for registering incidents.
Package inmem provides in-memory implementations of all the domain repositories.
Package inmem provides in-memory implementations of all the domain repositories.
Package inspection provides means to inspect cargos.
Package inspection provides means to inspect cargos.
Package location provides the Location aggregate.
Package location provides the Location aggregate.
Package routing provides the routing domain service.
Package routing provides the routing domain service.
Package tracking provides the use-case of tracking a cargo.
Package tracking provides the use-case of tracking a cargo.
Package voyage provides the Voyage aggregate.
Package voyage provides the Voyage aggregate.