A messaging application, a mobile client for the Zulip API.
- Single Activity
- Multi-module architecture
- Light and Dark theme
- Ability to create your own channel (“+” button on the screen with
- The ability to open messages for both the channel (long tap on the channel
Channels Fragment) and the topic (click on the topic in
- The ability to write to different topics (only from the chat channel in
- Ability to go to the channel topic from channel chat to
ChatFragment(click on the topic)
- The ability to put a reaction, delete, edit and copy a message (long tap on
To fully work with the Zulip API used in the application, an API key is required.
How to get an API key.
After receiving the key, you need to add the following lines to the
username=<login> password=<API-key> base_url=<URL>
The application follows the principles of pure architecture, the representation layer implements the UDF architectureusing the
Elmslie library. Example implementation of the
||Android Application||Combines everything necessary for the correct operation of the application.|
||Java/Kotlin Library||Common classes, for use by other modules.|
||Android Library||UI components, extension functions, base classes.|
||Android Library||API for processing network requests and responses from a remote data source.|
||Android Library||Implementation of a local database using the
||Android Library||Classes responsible for authorization logic.|
||Android Library||Resources used by modules.|
||Android Library||Displaying channels using
||Android Library||Displaying channel/topic messages (
||Android Library||Displaying the user profile using the
||Android Library||Displaying information about all users in the organization using the
- Coroutines, Flow – Asynchronous operation.
- Retrofit 2 – Requests to the network.
- Ok Http – Requests to the network.
- Kotlin Serialization – Serialization of data.
- Coil – Uploading images over the network, caching downloaded images.
- Jetpack Paging 3 – Loading data in small parts.
- Android Navigation Component – Navigation through the application.
- ViewBinding – Improvement and optimization of the code associated with the view layer.
- Shimmer – Data loading display.
- Dagger2 – Dependency injection.
- Elmslie – Simplification of the implementation of the ELM architecture.
- Room – Abstraction layer on top of SQLite, allowing free access to the database.
- DataStore – Storing data in the form of key-value pairs using Coroutines and Flow.
- Timber is a Logger that provides a utility on top of the usual Log class.
- Leak Canary – Detection of memory leaks.