Skip to content

Project · Kotlin and Android App Development

Project: Kharcha, a UPI expense tracker app

Projectintermediate· about 10 hours· 6 steps

The brief

Most UPI apps show payments but not where the month's money went. You build Kharcha, an Android app in Jetpack Compose where you add expenses (title, amount, category) and see the list and the month's total. Data is saved in a Room database, the screens share a ViewModel, Navigation Compose moves between them, and unit tests check the money logic.

Why it matters

This is the shape of most real Android apps: a form, a list, a database, a ViewModel and two screens. Companies hiring junior Android developers expect you to build exactly this, and a working app on your phone with its code on GitHub is a strong first portfolio piece.

Skills you practise

  • Gradle, the version catalog and KSP
  • Room entities, DAOs and Flow
  • unit tests with JUnit
  • ViewModel and StateFlow
  • Compose forms, lists and Scaffold
  • type-safe Navigation Compose
  • Logcat and adb

You need

  • Android Studio (Ladybug or newer) with an emulator (for example Pixel 8, API 35) or an Android phone with USB debugging on
  • adb on your PATH (it is in the Android SDK's platform-tools folder), or use Android Studio's Terminal and Logcat windows
  • A terminal: on Windows use gradlew.bat (or .\gradlew in PowerShell) wherever the steps say ./gradlew

What you will have at the end

The Kharcha app: a two-screen Compose app that saves expenses in Room and shows the month's total, with passing unit tests and its code on GitHub.

How it is marked (rubric, 100 points)
Works end to endExpenses are added, listed newest first, totalled correctly and still there after a restart.35
ArchitectureThe UI only reads StateFlow and calls ViewModel functions; Room is reached only through the DAO; routes are type-safe.25
Input and money handled wellBad amounts cannot be saved; money is Long paise; MoneyTest passes.20
Code and presentationClean, named composables; a README with screenshots and how to build; no unused template code left.20

0/6 steps done

Step 1 of 6

Create the project and add the libraries

A new Compose project named Kharcha (package com.example.kharcha) builds with Room, KSP, Navigation and lifecycle libraries added, and app-debug.apk is made.

In Android Studio choose New Project > Empty Activity, name it Kharcha, package com.example.kharcha, minimum SDK 24, build language Kotlin DSL. Let the first Gradle sync finish. Then add the lines from libs.versions.toml and build.gradle.kts (both files here) to your project's files and sync again. KSP is the tool that generates Room's code at build time; its version must match your Kotlin version.

Build from the terminal in the project folder, then list the output folder. A build that ends in BUILD SUCCESSFUL proves the libraries resolved and the project compiles.

Run this on your machine, then paste the output below
$ ./gradlew assembleDebug && ls app/build/outputs/apk/debug/

Also check yourself

Your notes: libs.versions.toml, build.gradle.kts, Expense.kt, Money.kt, ExpenseViewModel.kt, KharchaApp.kt

Write down each command you ran. It goes into your project summary.