Knox is a peer-to-peer mobile chat application that uses no intermediary, no server, ensuring users' privacy and security. This is made possible by sockets to exchange text and files between peers present in the same network.
Developed by Team KotlinX
-
Create an alias to ensure privacy
-
Send text messages to peers
-
Send files such as images, audio, and other documents to peers
-
Block a peer from further communication
-
Prerequisites
-
Java Development Kit version 8 or higher. Download JDK 11 here.
-
Android Studio Bumblebee or higher installed with Android Gradle Plugin 7.1.4 or higher and Kotlin plugin version 1.5 or higher. Download Android Studio Bumblebee here.
-
An Android Virtual Device with API level 21 or above to run the mobile application locally or a physical Android device with USB debugging turned on.
-
-
Steps
- Clone the GitHub repository using Git.
git clone https://github.com/pk-218/KotlinX.git
- Build the project using Gradle CLI
./gradlew build
- Run the project on your virtual or physical Android device.
./gradlew installDebug
Knox follows the single Activity, MVVM (Model-View-ViewModel) architecture. The data stores and sources are interfaces by a repository that is accessed by ViewModels via dependency injection. The ViewModels supply the data to the UI or Views (here, Fragments).
-
Kotlin: An open source, modern statically typed programming language used by over 60% of professional Android developers and officially supported by Google since 2019.
-
XML: Extensible Markup Language used to defined the views for the Android mobile application.
-
Android Studio: The official integrated development environment for Google's Android operating system, built on JetBrains' IntelliJ IDEA software and designed specifically for Android development.
-
Jetpack Libraries: A suite of libraries maintained by Google that work consistently across Android versions and devices.
-
Fragment - Allows creation of multiple screens hosted within a single Activity.
-
ViewModel - Designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
-
Room - Provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
-
Navigation - Helps implement the Navigation components such as NavHost and NavController.
-
Hilt - Built on top of Jetpack Dagger that provides dependency injection with ease.
-
Preferences DataStore - A data storage solution that allows to store key-value pairs locally using coroutines and Flow.
-
Check out the demonstration video here. You can download the APK here.