Skip to content

sksaikia/SplitYourBillsAndroid-MultiModule

Repository files navigation

SplitYourBillsAndroid-MultiModule

Terminology

  • Space : Can consider it as a group where user can put multiple transactions
  • Transaction: Transaction is the reason for which user does the money related transfer
  • Transaction Details: It the original amount which the user pays or owes from someone

User Journey

  • User lands on Authentication Selector Screen , gets to choose between login or register

  • Once the user registers/logs in , user lands on the All Spaces screen

  • All spaces screen

    • The user will see total balance of transactions, total in and out amount . User will also get a list of all spaces which he is a part of .
    • On Clicking any of the space, it will navigate the user to Space Detail screen, where the user can see space name, description, creator, and get a list of members and all transactions
  • All Transaction screen

    • The user will see total balance of transactions, total in and out amount . User will also get a list of all transactions which he is a part of .
    • on clicking on any of the transaction, gets the transaction description and money related details to it
  • Create New Transaction Screen

    • User creates a new transaction and selects the space related to it
    • Once the transaction is created , the user gets the option to select how to split the bills , User can manually split the bills on the bill split screen

Tech Stack

UI: Jetpack Compose, Compose Navigation

Network: Retrofit, Kotlin Flows

Dependency Injection: Hilt

Server: Spring boot application deployed on Railway with MySQL

Screenshots

Screens

Start Screen Transactions Loading Screen Space Loading Screen
Select Contacts Screen Space Details Screen Home Screen
Empty Transactions Screen Manual Bill Split Screen Transaction Detail Screen
Transaction Home Screen Create New Space Screen Create Transaction Screen
Profile Screen Image Picker Screen

Features

  • Multi-modular architecture with Jetpack Compose

  • Network calls using Kotlin Flow and Retrofit

  • Each module is following Clean Architecture with MVVM

  • Use SharedPreference to store user auth token

  • Contact Picker library to pick multiple contacts from device

  • Image Picker [Instagram style]

Optimizations

  • Replace Shared Preference with Data Store

  • Use caching with Room DB to have offline support

Roadmap

  • Add Profile Screen for user

  • Create Media Picker

  • Add Home Screen

  • Add Transactions Graph Module

  • Add Dark Mode support

  • Add Caching with Room

Screen.Recording.2022-12-20.at.6.01.04.PM.1.1.mp4

Figma - https://www.figma.com/file/1ALLsJ6F4cvegH2y2LOAdo/Split-Your-Bills?node-id=0%3A1

Using Placeholder images from - Image by storyset on Freepik

About

Repo demonstrates Multi Module Clean Architecture on Android with Jetpack Compose, Coroutines, Flow, MVVM,

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages