/SwiftWave

A Fully Functional Online Chat Application Built on MVVM architecture using Kotlin + Jetpack Compose

Primary LanguageKotlin

SwiftWave

Crafting Connections, Crafting Conversations: Enter the Realm of SwiftWave!

A Fully Functional Online Social Media Application Built on MVVM architecture using Kotlin + Jetpack Compose

Screenshots 1 knu Untitled (2) Untitled (3)

Features

1) Messages and Media

  • Send / Recieve Images, VIdeos of Files (Any file ie Apks, Documents, Audio etc)
  • Send / Recieve Messages with / without Attached Media
  • Get Realtime Animated Upload Status, ie megabytes uploaded and total megabytes
  • Choose Media from Any Source - Camera, Gallery, Google Photos, File manager etc
  • Crop, Resize, Rotate, Flip Images
  • Choose Upload Quality for Images ( from 10-100% )
  • Read Receipts ( Can be enabled/disabled by the user )
  • Animated Typing Indicator
  • Online Status Indicator
  • Search for Messages ( app auto scrolls b/w multiple messages if they match the searched string )
  • Swipe Gestures to Reply and Forward
  • Reply to Messages, Stories, Images, Videos and Files along with a preview (Clicking on the card Automatically scrolls to the replied Messages)
  • Forward Messages and Media (when owner deletes the media, all the forwarded instances of that media become unavailable aswell for security)
  • React to Messages using Emojis ( Recently Used Emojis for each user are cloud synced for seamless experience at every login on any device )
  • View Bio and Email of the Other person at Chat Screen
  • Star Messages
  • Edit Messages or Media-Message bundle
  • Delete Messages
  • Copy Messages
  • Open Images (with zoom functionality)
  • Play Videos (with loop and speed control)
  • Images and Videos are LRU cached locally so they don't redownload again and again
  • Open any file with suitable intent
  • Floating Button to scroll all the way to the bottom

2) Stories

  • Upload / View Stories (with zoom)
  • Check who viewed your story
  • check who liked your story
  • reply to stories (Automatically transitions to replied user's chat screen after replying)
  • Stories auto delete after 24h

3) Chat Screen Customisations

  • Change Font Size
  • Change Rounded Corner Radius
  • Change Chat background's Visibility
  • Change Chat background's Material3 Color Tint
  • Switch b/w diff chat backgrounds
  • Swap Chat Bubble Colors
  • all Customisation preferences for each user are cloud synced for seamless experience at every login on any device

4) Account and Settings Screen

  • Change Profile Picture ( choose from any source, strict 1:1 aspect ratio for profile pictures by default )
  • Change Bio
  • Block/Unblock Users
  • Add/Remove Users from favorites list
  • Enable/Disable Read Receipts
  • Adjust Upload Quality For Images and Stories (b/w 10-100%)
  • Delete contact ( also deletes all the chats at once )

5) Notifications

  • Recieve Notifications for
  • Messages
  • Media and Files
  • When someone likes your story

6) Other Main Screen Features

  • Show Latest message for each user (along with time and icons for media and files if any)
  • Swipe Gestures to Favorite, Delete or Block a User
  • Search For Users
  • View Stories
  • Add New Users

7) Other Exciting Features

  • Google Sign in Authentication
  • Material3 Color Theming - App Themes itself according to the dominant color of the Wallpaper
  • Offline Data Persistence - If the Device is offline, the app operates normally on cached data, when Data Access is available, app Syncs all the locally cached Changes to cloud again
  • Loaded with Animations for each operation to give the best possible user experience

Underhood Implementations-

  • Firebase Authentication ( Google )
  • Cloud FireStore NoSQL Database to Store User Data and Messages
  • Firebase Storage to store Images, Videos and Files
  • FCM and OkHTTP For Realtime Notifications
  • Coil and Glide Library for Image Loading and Caching
  • Media3 ExoPlayer for Video Playback
  • Lottiefiles and Compose Animations
  • Dynamic Material3 ColorScheme

Thanks to @dsa28s for his implementation of Media3 ExoPlayer

Thanks to @CanHub for Image Cropper

Click the Link to see the App in Action! https://drive.google.com/file/d/1XrQtiqISQwlzP7vEYHODuo7poUjuY_XJ/view?usp=sharing