An Android application that lets you create contact cards and share them via QR codes. Easily scan other users’ QR codes to import their contact details directly into your app.
- Features
- Architecture & Branches
- Technologies Used
- Screenshots
- Getting Started
- Running the Tests
- Contributing
- License
- Contact
- Create Contact Cards: Enter details (name, position, phone, email) to create personalized contact cards.
- Share via QR: Generate a QR code for each contact card to share quickly with others.
- Scan & Import: Scan someone else’s QR code and automatically import their contact info.
- Offline Support: All contacts are stored locally using Room database.
This repository demonstrates different Android architecture approaches. Each branch contains the same app functionality but uses different tech stacks and patterns:
-
MVP (branch:
master
)- Java 17
- Plain MVP architecture (no Clean Architecture)
- RxJava for reactive programming
- Tests: JUnit, Mockito, Robolectric
-
MVP-MVI (branch:
mvp-mvi
)- Java 17
- Clean Architecture + MVP + MVI pattern
- RxJava for reactive programming
- Tests: JUnit, Mockito, Robolectric
- Room (local database storage)
- ML Kit for QR scanner functionality (scan contact QR codes)
- JUnit for unit testing
- Mockito for mocking dependencies
- Robolectric for Android-specific unit tests
- Gradle build system
Below are a couple of in-app views. (You can place images in a screenshots
folder in your repo.)
-
Clone the repo:
git clone https://github.com/arch3rtemp/contact-exchange-android-java.git cd contact-exchange-android-java
-
Checkout a Branch For example, if you want to work on the
mvp-mvi
branch:git checkout mvp-mvi
-
Open in Android Studio Go to File → Open... Select the project folder you just cloned.
-
Requirements
- Android Studio Meerkat or later
- Gradle 8.x or later
- Minimum Android SDK 21
-
Build & Run
- Let Gradle Sync after opening the project.
- Run the app on an emulator or physical device via Run → Run App (or the green "play" button).
-
Running the Tests
- Each branch includes unit tests:
./gradlew test
Robolectric tests also run with the same command. You can check the results in Android Studio’s Test Results panel.
- Each branch includes unit tests:
Contributions are welcome! If you'd like to contribute:
- Fork the repository.
- Create a new branch (
feature/awesome-improvement
or similar). - Commit your changes and open a Pull Request with a detailed description. Your contribution will be reviewed, and if approved, merged into the main project.
This project is licensed under the MIT License. See the LICENSE file for details.
For any questions or suggestions, feel free to reach out:
- Archil Asanishvili - [email protected]
- LinkedIn - https://www.linkedin.com/in/archil-asanishvili