Skip to content

Latest commit

 

History

History
184 lines (170 loc) · 9.14 KB

README.md

File metadata and controls

184 lines (170 loc) · 9.14 KB

Jetpack Compose - Chat App 💬💬💬

ic_launcher

The application is a Chat App developed using Jetpack Compose and follows a Modular architecture. To log into the app, users must create an account or sign in directly using a Google account. Authentication processes are handled through Firebase Auth. Users can update their profile picture or username, and if desired, delete their account. The app allows real-time messaging with individuals or creating group chats with friends for instant messaging. It supports text, PDF, image, and voice recording types. Within the app, you can also take photos using the built-in camera feature and share them. The notification feature is provided through Firebase Cloud Messaging. Even when you are not using the app, incoming messages are displayed to you via notifications.

This is the GitHub repository for the backend project used by the app.

Features

  • Authentication: Allows users to create an account or log in directly with a Google account using Firebase Authentication.
  • Profile Management: Users can update their profile picture or username and delete their account if desired.
  • Instant Messaging: The app enables real-time messaging with an individual or group chats with friends.
  • File Sharing: Supports text, PDF, image, and voice recording sharing.
  • Camera Integration: Users can take photos using the in-app camera and share them instantly.
  • Notifications: Receive real-time message notifications via Firebase Cloud Messaging, even when the app is not in use.

Tech Stack 📚

Outputs 🖼

Dark Theme Light Theme
Login
Sign Up
Chats
Chat Box
Profile
Create Contact
Create Group
Settings

Modularization 📦

Name Responsibilities Key classes
app Brings everything together required for the app to function correctly. This module responsible for navigation. ChatApp, MainActivity
feature:1,
feature:2
...
Functionality associated with a specific feature or user journey. Typically contains UI components and ViewModels which read data from other modules.
Examples include:
  • feature:chats On the Chats screen you can view your friends, add friends or create groups.
ChatsScreen
ChatsViewModel
core:data Fetching app data from multiple sources and sends it to the UI through the core:domain module. ChatRepository
core:designsystem Design system which includes Core UI components (many of which are customized Material 3 components), app theme and icons. ChatAppModalBottomSheet ChatAppButton ChatAppTheme
core:ui Composite UI components and resources used by feature modules. Unlike the designsystem module, it is dependent on the data layer since it renders models. ChatItem
core:common Common classes shared between modules. UiText
Response
core:network Making network requests and handling responses from a remote data source. KtorChatApi MessagesRemoteDataSource
core:datastore Storing persistent data using DataStore. AppPreferencesDataSource
core:database Local database storage using Room. UserDatabase
Dao classes
core:model Model classes used throughout the app. User
UserChat
Message
core:domain It houses use cases. It serves as a bridge between the data layer's repositories and the UI. GetMessagesUseCase UpdateUserUseCase
core:authentication Manages user identity verification and access control. GoogleSignInClient FirebaseEmailPasswordClient

Architecture 🏗

The app uses MVVM [Model-View-ViewModel] architecture to have a unidirectional flow of data, separation of concern, testability, and a lot more.

mvvm