- About
- Features
- Installation
- Requirements
- Building the Project
- Dependencies
- Build Plugins
- Technology Stack
Personal Financial Tracker is a modern Android mobile application built with Jetpack Compose and Kotlin. This app helps users manage their personal finances efficiently by tracking income and expenses in real-time. With Firebase integration for cloud synchronization, users can securely manage their financial data with 6-digit PIN authentication.
- Modern UI built with Jetpack Compose
- Secure authentication with 6-digit PIN
- Real-time cloud sync with Firebase
- Camera integration for receipt capture
- Location-based expense tracking
- Comprehensive financial analytics
- Crash reporting for app stability
- ✅ User Authentication (Firebase Auth + 6-Digit PIN)
- ✅ Track Income & Expenses
- ✅ Categorize Transactions
- ✅ View Financial Analytics
- ✅ Capture Receipt Photos
- ✅ Location-based Expense Tracking
- ✅ Real-time Cloud Sync
- ✅ Expense Reports & Insights
- ✅ Real-time Notifications
Before you begin, ensure you have the following installed:
-
Android Studio ( Android Studio Panda 4 | 2025.3.4 Patch 1)
- Download from: https://developer.android.com/studio
-
JDK 11 or Higher
- Download from: https://www.oracle.com/java/technologies/downloads/
-
Android SDK
- Minimum SDK: Android 7.0 (API 24)
- Target SDK: Android 13 (API 37)
- Install via Android Studio's SDK Manager
-
Git
- Download from: https://git-scm.com/
# 1. Clone the repository
git clone https://github.com/Mapzoll/PersonalFinancialTracker_MobileApp.git
# 2. Navigate to the project directory
cd PersonalFinancialTracker_MobileApp
# 3. Open the project in Android Studio
# File → Open → Select the project folder
# 4. Sync Gradle files
# Android Studio will automatically sync dependencies
# 5. Configure Firebase
# - Add your google-services.json file to the app/ directory
# - Download from Firebase Console: https://console.firebase.google.com/
# 6. Build the project
# Build → Make Project (Ctrl+F9 / Cmd+F9)
# 7. Run on the emulator or device
# Run → Run 'app' (Shift+F10 / Ctrl+R)- Go to Firebase Console
- Create a new project
- Add Android app to your Firebase project
- Download
google-services.json. - Place it in the
app/directory - Enable required Firebase services:
- Authentication
- Firestore Database
- Crashlytics
- Operating System: Windows, macOS, or Linux
- RAM: 8 GB minimum (16 GB recommended)
- Disk Space: 10 GB for Android Studio + SDK
| Component | Version |
|---|---|
| Android Studio | Latest (2024.x) |
| JDK | 11 or higher |
| Gradle | 8.0+ (auto-managed) |
| Kotlin | 1.9+ (auto-managed) |
| Android SDK | 37 (Target) |
| Minimum Android | 7.0 (API 24) |
- Android Version: 7.0 (API 24) or higher
- RAM: 2 GB minimum
- Storage: 100 MB free space
- Internet: Required for all features (cloud-based application)
- Permissions Required:
- Camera (for receipt capture)
- Location (for expense tracking)
- Storage (for image caching)
- Open Android Studio
- Select "File" → "Open"
- Navigate to the project folder
- Wait for Gradle sync to complete
- Click "Build" → "Make Project"
- Run on an emulator or a connected device
# Build debug APK
./gradlew assembleDebug
# Build release APK
./gradlew assembleRelease
# Run tests
./gradlew test
# Clean build
./gradlew cleanAll dependencies are managed through version catalogs in gradle/libs.versions.toml and direct implementations in app/build.gradle.kts.
dependencies {
// Jetpack Compose Core
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
// Compose Icons
implementation(libs.androidx.compose.material.icons.core)
implementation(libs.androidx.compose.material.icons.extended)
// Compose Adaptive
implementation(libs.androidx.compose.adaptive)
implementation(libs.androidx.compose.adaptive.layout)
implementation(libs.androidx.compose.adaptive.navigation3)
// Activity & Compose Integration
implementation(libs.androidx.activity.compose)
// Material Design
implementation(libs.material)
// ConstraintLayout
implementation(libs.androidx.constraintlayout)
// Accompanist (Permissions & more)
implementation(libs.accompanist.permissions)
}dependencies {
// Navigation Compose
implementation("androidx.navigation:navigation-compose:2.7.5")
implementation(libs.androidx.navigation3.runtime)
implementation(libs.androidx.navigation3.ui)
// Navigation Fragment & UI
implementation("androidx.navigation:navigation-fragment-ktx:2.7.7")
implementation("androidx.navigation:navigation-ui-ktx:2.7.7")
// ViewModel Navigation
implementation(libs.androidx.lifecycle.viewmodel.navigation3)
}dependencies {
// Firebase BOM for version management
implementation(platform("com.google.firebase:firebase-bom:34.13.0"))
implementation(platform(libs.firebase.bom))
// Firebase Core Services
implementation("com.google.firebase:firebase-auth")
implementation("com.google.firebase:firebase-firestore")
implementation("com.google.firebase:firebase-analytics")
implementation("com.google.firebase:firebase-crashlytics")
}dependencies {
// DataStore Preferences
implementation(libs.androidx.datastore.preferences)
}dependencies {
// Retrofit
implementation(libs.retrofit)
// OkHttp
implementation(libs.okhttp)
implementation(libs.logging.interceptor)
// Moshi (JSON Serialization)
implementation(libs.moshi.kotlin)
implementation(libs.converter.moshi)
}dependencies {
// Lifecycle
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.viewmodel.compose)
// Coroutines
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.coroutines.android)
// Serialization
implementation(libs.kotlinx.serialization.core)
}dependencies {
// Camera
implementation(libs.androidx.camera.core)
implementation(libs.androidx.camera.camera2)
implementation(libs.androidx.camera.lifecycle)
implementation(libs.androidx.camera.view)
// Image Loading
implementation(libs.coil.compose)
// Location Services
implementation(libs.play.services.location)
}dependencies {
// Dependency Injection
implementation("javax.inject:javax.inject:1")
// Core KTX
implementation(libs.androidx.core.ktx)
}dependencies {
// RecyclerView
implementation(libs.androidx.recyclerview)
}dependencies {
// Unit Testing
testImplementation(libs.junit)
testImplementation(libs.androidx.junit)
testImplementation(libs.androidx.core)
testImplementation(libs.kotlinx.coroutines.test)
// Android Testing
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.runner)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
// Debug Testing
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
}dependencies {
// KSP - Kotlin Symbol Processing
"ksp"(libs.androidx.room.compiler)
"ksp"(libs.moshi.kotlin.codegen)
}The project uses the following Gradle plugins configured in build.gradle.kts:
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.google.devtools.ksp)
alias(libs.plugins.jetbrains.kotlin.plugin.serialization)
id("com.google.gms.google-services") version "4.4.4"
id("com.google.firebase.crashlytics") version "3.0.2"
}Plugin Details:
- android.application - Android app development
- kotlin.compose - Jetpack Compose support for Kotlin
- google.devtools.ksp - Kotlin Symbol Processing for annotation processing
- jetbrains.kotlin.plugin.serialization - Kotlin serialization support
- com.google.gms.google-services - Google Services (Firebase integration)
- com.google.firebase.crashlytics - Firebase Crash Reporting
- Jetpack Compose (Modern Android UI framework)
- Material Design 3
- Compose Navigation
- Accompanist Permissions
- ConstraintLayout
- Material Icons
- Firebase Firestore (Cloud database)
- DataStore Preferences
- Retrofit (HTTP client)
- OkHttp (HTTP interceptor)
- Moshi (JSON serialization)
- Logging Interceptor
- Firebase Authentication
- 6-Digit PIN Authentication
- Dependency Injection (javax.inject)
- Camera API (Core, Camera2, Lifecycle, View)
- Play Services Location (GPS)
- Coil (Image loading and caching)
- Lifecycle ViewModel
- Coroutines (Core & Android)
- Navigation (Compose, Fragment, UI)
- Kotlin Serialization
- Core KTX
- JUnit
- AndroidX Test (Core, JUnit)
- Espresso
- Compose UI Test
- Coroutines Test
- KSP (Kotlin Symbol Processing)
- Room Compiler
- Moshi Kotlin Codegen
This application requires an active internet connection for all features as it is a cloud-based application. All financial data is stored in Firebase Firestore and cannot be accessed offline.
The app uses a 6-digit PIN authentication method combined with Firebase Authentication for secure user access.
- Minimum SDK: 24 (Android 7.0)
- Target SDK: 37 (Android 13)
- Java Compatibility: JDK 11+
- Test Runner: AndroidJUnitRunner
- Internet Connection: Required
This project is licensed under the MIT License.
For questions or support, please open an issue on the GitHub repository.
-- 2026