First off, thank you for considering contributing to UPI Budget Tracker! It is people like you who make open source a wonderful place to learn, inspire, and create.
To maintain a healthy and productive community, please read and follow these guidelines.
By participating in this project, you agree to abide by our Code of Conduct. Please report any unacceptable behavior to the project maintainers.
- Search the existing Issues before opening a new one to see if the bug has already been reported.
- If you find a new bug, open a new Issue using the Bug Report template.
- Provide a clear description, steps to reproduce, expected behavior, actual behavior, and system environment info (Android version, device model, SDK version).
- Check the Issues board to see if the enhancement has already been proposed.
- Open an Issue using the Feature Request template.
- Explain the use case, why this feature would be valuable, and how it could be implemented.
- Fork the repository and create your branch from
main.- Branch naming:
feature/your-feature-nameorbugfix/issue-number-description.
- Branch naming:
- Ensure your code adheres to the project's styling and standards.
- Write unit tests for new logic if applicable.
- Keep pull requests focused on a single issue or feature.
- Open a PR targeting the
mainbranch, filling out the Pull Request Template.
- Prerequisites: Install Android Studio (Ladybug or newer) and JDK 17+.
- Importing the project:
- Open Android Studio.
- Choose Open and select the root directory of this repository.
- Gradle wrapper files (
gradlew,gradlew.bat) will be automatically generated by Android Studio on project sync if they are missing.
- Database Inspection:
- The app uses Room Database. You can inspect the local database using Android Studio's App Inspection tool while running the app on an emulator or debug device.
- Code Style:
- We strictly follow the Official Kotlin Coding Conventions.
- Run Gradle formatting checks before submitting code:
gradlew spotlessCheck(if Spotless is configured) or format via Android Studio (Ctrl + Alt + L/Cmd + Option + L).
- MVVM Architecture: Avoid placing business logic directly in UI files. Place data logic in entities/DAOs, operations in the Repository, state management in the ViewModel, and only rendering code in Composable files.
- Reactive Programming: Use Kotlin Flows and StateFlows (
stateIn) to manage and expose states asynchronously from Database to view models. - Jetpack Compose UI: Make sure components are modular and decoupled. Use Material 3 styling tokens (
MaterialTheme.colorScheme, etc.) instead of hardcoded colors.
We follow the Conventional Commits specification:
feat: A new feature (e.g.,feat: add budget recommendation history)fix: A bug fix (e.g.,fix: resolve crash on null UPI ID parsing)docs: Documentation changesstyle: Code style changes (formatting, missing semi-colons, etc.)refactor: Refactoring code without changing behaviortest: Adding or correcting testschore: Maintenance tasks, dependencies updates