This document describes the system architecture and communication protocol for a peer-to-peer voice messaging application. It discusses using (1) threads to handle server, receiver, and keypad functions, (2) sockets for communication between users with a central server, and (3) codecs for recording and playing voice messages. The socket implementation was modified to use dynamic ports for senders and receivers to allow multi-user communication through a central server.