This is a sample app to demonstrate the Tennis scoreboard, which uses Clean Architecture with MVVM and Jetpack Compose for UI screens


Game points

  • 4 points are one Set.
  • The score of each game is from 0 to 4 points are described as love, 15, 30, 40, and game.
  • if both players score 40-40 then it’s a deuce.
  • if it’s deuce, then the player needs to win with a difference of 2.
  • when it’s deuce and if the player got one point then it’s advantage.
  • when it’s deuce and each player won one-one point it’s deuce again.


  • 6 Sets are one Match.
  • if both players score 6-6, then it’s a tiebreak (tiebreak scenario is not handled as of now).

Match points

  • if it’s the best of 3, a player needs to score 2 matches in total to win.

Application Screens

reset_screen advantage_screen match_win_screen


  • Jetpack
    • ViewModel – Manage UI data to survive configuration changes.
    • StateFlow – is a state-holder observable flow that emits the current and new state updates to its collectors.
    • Compose – Jetpack Compose is the modern toolkit for building native Android UI
  • Hilt – A fast dependency injector for Android.


View Github