top
(README.md)
# 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](http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215) book by Eric Evans, which was [originally](http://dddsample.sourceforge.net/) 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](https://github.com/marcusolsson/goddd) is maintained separately and accompanied by an [AngularJS application](https://github.com/marcusolsson/dddelivery-angularjs) as well as a mock [routing service](https://github.com/marcusolsson/pathfinder). 

### 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.

`repository` 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.

Imports 13 package(s) ΒΆ

  1. github.com/go-kit/kit/examples/shipping/cargo
  2. github.com/go-kit/kit/examples/shipping/repository
  3. github.com/go-kit/kit/examples/shipping/inspection
  4. github.com/prometheus/client_golang/prometheus
  5. golang.org/x/net/context
  6. github.com/go-kit/kit/examples/shipping/routing
  7. github.com/go-kit/kit/examples/shipping/tracking
  8. github.com/go-kit/kit/examples/shipping/booking
  9. github.com/go-kit/kit/log
  10. github.com/go-kit/kit/metrics/prometheus
  11. github.com/go-kit/kit/examples/shipping/handling
  12. github.com/go-kit/kit/metrics
  13. github.com/go-kit/kit/examples/shipping/location