# Envoy --- GitHub milestone GitHub pull requests GitHub issues **Envoy** is a messenger written in Java.
It is split into three separate components: Envoy Client, Envoy Common and Envoy Server.




--- ### Envoy Client: This is the only part users are interested in. It contains everything to make this messenger work: the UI. ### Envoy Server: Envoy offers the option to download and host your own server over which Envoy can run.
This part will be especially appealing to institutions/organizations who want to self-host Envoy. ### Envoy Common: This part contains elements that both the client and the server need. It will be automatically part of either one (Thanks, Maven!). ## Features Envoy features a lot of things and many more are yet to come. Currently existing features are: #### 'Client' contains: * typical Messenger features (sending and receiving of messages, groups, sending images and voice messages) * typical Messenger feeling (displaying unread messages) * Appealing user interface (UI) * Programming * API to change default configuration * Advanced logging possibilities * Tons of Events to interact with * Detailed Javadoc to improve readability of code #### 'Common' contains: * the event system * the logger * Envoy-specific Exceptions * some util classes * the most basic datatypes #### 'Server' contains: * the database implementation of the data classes * the connectivity classes * processors to handle incoming events * Utility classes to check client version compatability and Password validity