/messenger-clone

I am creating a clone of an existing application to study Android development features

Primary LanguageKotlin

messeger-clone: Messenger App Clone

_ORIGIN APP: https://www.messenger.com

๐ŸŒ Introduction

I am creating a clone of an existing application to study Android development features

๐Ÿ™ Important

The database used was the android's internal storage with SQL. Everything included was done as a means of studying android development.

๐Ÿ“‚ Project File Tree

messenger_clone/app/src/main/java/dev/bellu/messenger_clone
โ”œโ”€โ”€ data
โ”‚   โ”œโ”€โ”€ contracts
โ”‚       โ””โ”€โ”€ MessengerDao.kt
โ”‚   โ”œโ”€โ”€ database
โ”‚       โ””โ”€โ”€ MessengerDatabase.kt
โ”‚   โ”œโ”€โ”€ entity
โ”‚       โ””โ”€โ”€ AdvertisingEntity.kt
โ”‚       โ””โ”€โ”€ ConversationEntity.kt
โ”‚       โ””โ”€โ”€ MessageEntity.kt
โ”‚       โ””โ”€โ”€ UserEntity.kt
โ”‚  
โ”œโ”€โ”€ di
โ”‚   โ””โ”€โ”€ AppModule.kt
โ”‚   โ””โ”€โ”€ ViewModelModule.kt
โ”‚  
โ”œโ”€โ”€ presentation
โ”‚   โ”œโ”€โ”€ composables
โ”‚       โ””โ”€โ”€ AppBar.kt
โ”‚       โ””โ”€โ”€ BottomBarCustom.kt
โ”‚       โ””โ”€โ”€ ChatPreview.kt
โ”‚       โ””โ”€โ”€ CircleAvatarCustom.kt
โ”‚       โ””โ”€โ”€ PersonView.kt
โ”‚       โ””โ”€โ”€ ReceiveMessage.kt
โ”‚       โ””โ”€โ”€ SendMessage.kt
โ”‚   โ”œโ”€โ”€ screens
โ”‚       โ”œโ”€โ”€ advertising
โ”‚           โ””โ”€โ”€ AdvertisingScreen.kt
โ”‚           โ””โ”€โ”€ AdvertisingViewModel.kt
โ”‚       โ”œโ”€โ”€ chat
โ”‚           โ””โ”€โ”€ ChatScreen.kt
โ”‚           โ””โ”€โ”€ ChatUiState.kt
โ”‚           โ””โ”€โ”€ ChatViewModel.kt
โ”‚       โ”œโ”€โ”€ friends
โ”‚           โ””โ”€โ”€ FriendsScreen.kt
โ”‚           โ””โ”€โ”€ FriendsViewModel.kt
โ”‚       โ”œโ”€โ”€ home
โ”‚           โ””โ”€โ”€ HomeScreen.kt
โ”‚       โ”œโ”€โ”€ settings
โ”‚           โ””โ”€โ”€ SettingsScreen.kt
โ”‚       โ”œโ”€โ”€ welcome
โ”‚           โ””โ”€โ”€ WelcomeScreen.kt
โ”‚   โ”œโ”€โ”€ shared
โ”‚       โ””โ”€โ”€ AppState.kt
โ”‚       โ””โ”€โ”€ BaseUiState.kt
โ”‚       โ””โ”€โ”€ BaseViewModel.kt
โ”‚   โ”œโ”€โ”€ theme
โ”‚       โ””โ”€โ”€ Color.kt
โ”‚       โ””โ”€โ”€ Theme.kt
โ”‚       โ””โ”€โ”€ Type.kt
โ”‚ 
โ”œโ”€โ”€ AppNavGraph.kt
โ”œโ”€โ”€ MainActivity.kt
โ”œโ”€โ”€ MessengerApplication.kt

๐Ÿงช Use Cases

1. Add Application User

The user of the application is automatically added with the first user in the database table must have a user in the database.

  1. Add to internal database.
  2. Open the application.

2. Add contacts from the app

Users need to be manually added to the database to become contacts in the application.

  1. Access the contacts section in the application.
  2. Add the desired contacts manually.
  3. Contacts are stored in Android's internal database.

3. Start a conversation with Contact

With all the contacts added, users can start conversations by accessing the conversations page and selecting the desired contact.

  1. Navigate to the friends section.
  2. Select the desired contact.
  3. Start the conversation.

4. Add Ads to the App

Ads need to be added to the database, similar to the process of adding users and contacts.

  1. Access the ads section in the app.
  2. Add the ad details manually.
  3. The ads are stored in Android's internal database.

๐Ÿ›  Tech Stack

Language

  • Kotlin with Jetpack Compose
  • SQL

External Packages

  • Navigation Compose
  • Coil Compose
  • Room (Database SQL)
  • Livedata
  • Koin (Injection Dependency)

Design Pattern

  • MVVM
  • Singleton

Architecture

  • Clean Architecture