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.
Easily record, edit, and delete your daily expenses to keep track of your spending habits. View detailed expense reports over time.
Log your income sources effortlessly and monitor your cash flow to maintain a balanced financial outlook without stress.
Visualize your spending and savings with beautifully designed charts, giving you deeper insights into your financial patterns.
Personalize the app by creating custom categories and tags to tailor the app to your unique financial needs and habits that fits you.
Manage your finances anytime, anywhere. Pocket Planner stores your data locally on your device, functions fully without internet.
Built using Kotlin Multiplatform technology, app works on both Android and iOS, allowing you to manage your finances across multiple devices.
Do you want to tract you income and expenses. Get Pocket Planner apk and try our the features it has.
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 ├── 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 ├── di │ ├── AppModule.kt │ └── PlatformModule.kt └── impl └── AppNavigationImpl.kt
─ theme ├── Color.kt ├── Dimen.kt ├── Shape.kt └── Type.kt
─ core ├── mapper │ └── ResultMapper.kt ├── network │ └── ResponseResult.kt ├── navigation │ └── LocalNavController.kt └── utils ├── Extensions.kt └── NoRippleInteractionSource.kt
─ data ├── database │ ├── expense │ │ └── ExpenseFunctions.kt │ ├── income │ │ └── IncomeFunctions.kt │ └── month │ └── MonthFunctions.kt ├── repository │ └── FinanceRepositoryImpl.kt └── sqldelight ├── expense │ └── Expense.sq └── month └── Month.sq
─ domain ├── model │ ├── FinanceModel.kt │ ├── MonthModel.kt │ └── FinanceLocalDate.kt ├── repository │ └── FinanceRepository.kt └── usecase ├── CreateExpenseUseCase.kt └── GetExpenseUseCase.kt
─ components ├── alertdialog │ └── AlertDialog.kt ├── button │ └── Button.kt ├── chart │ ├── FinanceBarChart.kt │ └── FinanceLineChart.kt ├── textfield └── AmountOutlineTextField.kt
─ androidMain ├── kotlin │ └── com │ └── daviekim │ └── myfinance │ └── app │ └── MainActivity.kt └── res ├── mipmap-anydpi-v26 │ └── ic_launcher.xml └── values └── strings.xml
─ 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
During the development of Pocket Planner, the following technologies and tools were utilized:
Some of the major challenges encountered during development were:
The development of Pocket Planner led to several significant achievements: