4.3 KiB
4.3 KiB
Phase 1 - MVP Detailed Plan (Concise)
Step-by-step breakdown for MVP development.
Task 1.1: Project Setup
Goal: Establish the foundational Android project.
- Create Project: New Android Studio project (Empty Compose Activity, Kotlin, Min SDK).
- Version Control:
git init, create.gitignore, initial commit. - Project Structure: Create standard packages (
ui,data,domain,di,util). - Dependencies: Add and sync core dependencies (Compose, Navigation, Lifecycle, Room, Coroutines, Hilt/KSP) in
build.gradle.kts.
Task 1.2: Local Database (Room)
Goal: Set up local SQLite storage using Room.
- Entities: Define
@Entitydata classes (BillEntity,PaymentEntity,GoalEntity) with primary keys, columns. Add TypeConverters if needed. - DAOs: Define
@Daointerfaces (BillDao,PaymentDao,GoalDao) with suspend/Flow CRUD methods (@Insert,@Query, etc.). - Database Class: Define
@Databaseabstract class extendingRoomDatabase, listing entities and DAOs. Increment version. - Database Instance: Provide singleton DB instance (Hilt module recommended).
Task 1.3: Basic UI Shell & Navigation
Goal: Create main navigation structure and placeholders.
- Navigation Routes: Define sealed class/enum for screen routes (
Screen.BillList, etc.). - NavHost: Set up
NavHostControllerandNavHostin main Activity/App Composable with placeholder screen Composables. - Bottom Navigation: Implement Material 3
NavigationBarintegrated withNavHostControllerandScaffold.
Task 1.4: Manual Bill Tracking
Goal: Implement core bill management functionality.
- Repository: Create
BillRepository(interface/impl) usingBillDao. - ViewModel: Create
BillViewModelusing Repository. ExposeStateFlow<List<BillEntity>>. Implement add/update/delete functions usingviewModelScope. - Bill List Screen: Create
BillListScreenComposable. CollectStateFlow, display inLazyColumnusingBillItem. Add FAB navigating to Add/Edit screen. - Add/Edit Bill Screen: Create
AddEditBillScreenComposable. UseTextFields, Date Picker. Manage state. Save button calls ViewModel and navigates back. Handle edit case (pass ID).
Task 1.5: Manual Payment Tracking
Goal: Allow marking bills as paid and viewing history.
- Mark as Paid Action: Add button/action in
BillListScreen/BillItem. - ViewModel Logic: Function updates Bill
isPaidstatus and inserts correspondingPaymentEntity(use transaction if needed). - Payment History Screen: Create
PaymentHistoryViewModel(usingPaymentDao/Repo) &PaymentHistoryScreenComposable displaying payments list.
Task 1.6: Basic Manual Goal Setting
Goal: Implement simple goal creation and viewing.
- Repository & ViewModel: Create
GoalRepository&GoalViewModel(similar pattern to Bills). - Goal List Screen: Create
GoalListScreenComposable displaying goals with FAB. - Add/Edit Goal Screen: Create
AddEditGoalScreenComposable with input fields and Save button.
Task 1.7: Essential Notifications
Goal: Notify users about upcoming bills.
- Worker: Create
BillReminderWorkerextendingCoroutineWorker. Inject Dao. - Worker Logic (
doWork): Query upcoming unpaid bills, build & show notification (NotificationCompat.Builder,NotificationManagerCompat). - Scheduling: Schedule
PeriodicWorkRequestin Application/Activity usingWorkManager.enqueueUniquePeriodicWork.
Task 1.8: MVP Testing
Goal: Ensure MVP stability.
- Unit Tests: ViewModels (JUnit, MockK/Mockito), Repositories.
- Database Tests: DAOs (Instrumented tests, in-memory DB).
- Manual Testing: Cover all MVP user stories/flows on various devices/emulators.
- UI Tests (Basic): Navigation, simple interactions (Compose testing).
Task 1.9: MVP Deployment Prep
Goal: Prepare MVP for potential initial release.
- Code Cleanup: Lint, remove unused code/logs, ensure consistent style.
- Documentation: Update
README.md(scope, setup instructions). - App Assets: Create adaptive icons, basic store screenshots.
- Release Build: Enable R8/Proguard, configure signing (generate/secure keystore).
- Build Signed App: Generate signed App Bundle/APK.