  This paper provides a mathematical framework for client-server communication
that results in a modular and type-safe architecture. It is informed and
motivated by the software engineering practice of developing server backends
with a database layer and a frontend, all of which communicate with a notion of
request/response. I make use of dependent types to ensure the request/response
relation matches and show how this idea fits in the broader context of
containers and their morphisms. Using the category of containers and their
monoidal products, I define monads on containers that mimic their functional
programming counterparts, and using the Kleene star, I describe stateful
protocols in the same system.
