The document describes designing a concurrent event notification application in Erlang. It discusses defining the roles of an event server, events, and clients. The event server accepts event subscriptions from clients, adds and cancels events, and forwards notifications. Events are spawned as processes that notify the server when their deadline is reached. The server design, event and client protocols, and code for implementing an event module and server are covered in detail.