Loading...

Organize Your Finances with Pocket Planner

User-friendly mobile application designed to help individuals efficiently manage their personal finances. It provides a simple yet powerful way to track expenses, log income, set monthly budgets, and visualize financial data using interactive charts. The app is developed with modern design principles and advanced technologies for performance and scalability.

View on GitHub Download APK
About App

Track Your Income and Expenses From the App

Pocket Planner is a mobile application designed to help users manage their personal finances by tracking expenses, logging income, setting budgets, and visualizing financial data through interactive charts. Developed using Kotlin for Android, it leverages Jetpack Compose for a modern, responsive UI and follows the MVI architecture to ensure a clean, modular, and scalable codebase. The app enables users to categorize expenses, compare income and spending, and set monthly budgets with notifications to prevent overspending. Financial data is presented visually through charts, helping users identify trends in their spending habits. Offline functionality ensures users can log transactions without internet access, with data syncing when online. The app uses SQLite for local storage and SQLDelight for generating type-safe SQL queries, optimizing performance and data management.

App Features

Awesome Features

Expense Tracking

Easily record, edit, and delete your daily expenses to keep track of your spending habits. View detailed expense reports over time.

Income Logging

Log your income sources effortlessly and monitor your cash flow to maintain a balanced financial outlook without stress.

Interactive Charts

Visualize your spending and savings with beautifully designed charts, giving you deeper insights into your financial patterns.

Customizable Categories

Personalize the app by creating custom categories and tags to tailor the app to your unique financial needs and habits that fits you.

Offline Access

Manage your finances anytime, anywhere. Pocket Planner stores your data locally on your device, functions fully without internet.

Cross-Platform Support

Built using Kotlin Multiplatform technology, app works on both Android and iOS, allowing you to manage your finances across multiple devices.

Screenshots
Download

Download Pocket Planner

Do you want to tract you income and expenses. Get Pocket Planner apk and try our the features it has.

App Architecture

Pocket Planner is designed using a modular architecture, following Clean Architecture principles and the MVI pattern. Below is a detailed breakdown of the file structure:

Presentation Module

                    ─ presentation
                       ├── navigation
                       │     └── AppNavigation.kt
                       ├── screen
                       │     ├── categorymonthdetail
                       │     │     ├── content
                       │     │     │    └── CategoryMonthDetailContent.kt
                       │     │     └── observer
                       │     │          └── CategoryMonthDetailObserver.kt
                       │     ├── createexpense
                       │     │     ├── content
                       │     │     │    └── CreateExpenseContent.kt
                       │     │     └── observer
                       │     │          └── CreateExpenseObserver.kt
                       │     └── home
                       │           ├── content
                       │           │    ├── HomeBodyContent.kt
                       │           │    └── HomeHeaderContent.kt
                       │           └── observer
                       │                └── HomeObserver.kt
                       └── viewmodel
                             ├── createincome
                             │     └── CreateIncomeViewModel.kt
                             ├── editexpense
                             │     └── EditExpenseViewModel.kt
                             └── months
                                   ├── MonthsScreenState.kt
                                   └── MonthsViewModel.kt
                

Navigation Module

                    ─ navigation
                       ├── di
                       │     ├── AppModule.kt
                       │     └── PlatformModule.kt
                       └── impl
                             └── AppNavigationImpl.kt
                

Theme Module

                    ─ theme
                       ├── Color.kt
                       ├── Dimen.kt
                       ├── Shape.kt
                       └── Type.kt
                

Core Module

                    ─ core
                       ├── mapper
                       │     └── ResultMapper.kt
                       ├── network
                       │     └── ResponseResult.kt
                       ├── navigation
                       │     └── LocalNavController.kt
                       └── utils
                             ├── Extensions.kt
                             └── NoRippleInteractionSource.kt
                

Data Module

                    ─ data
                       ├── database
                       │     ├── expense
                       │     │     └── ExpenseFunctions.kt
                       │     ├── income
                       │     │     └── IncomeFunctions.kt
                       │     └── month
                       │           └── MonthFunctions.kt
                       ├── repository
                       │     └── FinanceRepositoryImpl.kt
                       └── sqldelight
                             ├── expense
                             │     └── Expense.sq
                             └── month
                                   └── Month.sq
                

Domain Module

                    ─ domain
                       ├── model
                       │     ├── FinanceModel.kt
                       │     ├── MonthModel.kt
                       │     └── FinanceLocalDate.kt
                       ├── repository
                       │     └── FinanceRepository.kt
                       └── usecase
                             ├── CreateExpenseUseCase.kt
                             └── GetExpenseUseCase.kt
                

Components Module

                    ─ components
                       ├── alertdialog
                       │     └── AlertDialog.kt
                       ├── button
                       │     └── Button.kt
                       ├── chart
                       │     ├── FinanceBarChart.kt
                       │     └── FinanceLineChart.kt
                       ├── textfield
                             └── AmountOutlineTextField.kt
                

Android App Module

                    ─ androidMain
                       ├── kotlin
                       │     └── com
                       │           └── daviekim
                       │                 └── myfinance
                       │                       └── app
                       │                             └── MainActivity.kt
                       └── res
                             ├── mipmap-anydpi-v26
                             │     └── ic_launcher.xml
                             └── values
                                   └── strings.xml
                

Test Module

                    ─ test
                       ├── data
                       │     ├── repository
                       │     │     ├── database
                       │     │     │     └── FakeDatabaseFinanceDataSource.kt
                       │     │     └── impl
                       │     │           └── FinanceRepositoryImplTest.kt
                       │     └── impl
                       │           └── FakeFinanceRepositoryImpl.kt
                       ├── domain
                       │     └── usecase
                       │           ├── GetExpenseUseCaseTest.kt
                       │           ├── GetFinanceUseCaseTest.kt
                       │           └── GetMonthsUseCaseTest.kt
                       ├── mock
                       │     └── DatabaseFinanceDataSourceMock.kt
                       └── presentation
                             └── viewmodel
                                   ├── createexpense
                                   │     └── CreateExpenseViewModelTest.kt
                                   ├── home
                                   │     └── HomeViewModelTest.kt
                                   └── months
                                         └── MonthsViewModelTest.kt
                

Technologies Used

During the development of Pocket Planner, the following technologies and tools were utilized:

Challenges Faced

Some of the major challenges encountered during development were:

Achievements

The development of Pocket Planner led to several significant achievements:

daviekim.dev@gmail.com

Action Estate, Eldoret Kenya

+254701143038