#Project Structure Rules
#Single Module
- This is a single-module Android project — all code lives under
:app
- Do not create new Gradle modules or suggest modularization
#Dependency Injection
- Manual DI via
AppContainer interface + DefaultAppContainer implementation
- Do not introduce Hilt, Dagger, Koin, or any DI framework
- New repositories/services are added to
AppContainer and lazily initialized in DefaultAppContainer
- Access the container via
(application as VBHelper).container
#External Libraries
vb-nfc-reader is resolved from mavenLocal() — it must be installed locally before building
- Version catalog is in
gradle/libs.versions.toml — all dependency versions go there
- New dependencies must be added to the version catalog first, then referenced via
libs.* accessor
#Package Conventions
- New screens: create a sub-package under
screens/ (e.g., screens/myFeature/)
- Each screen package contains:
MyFeatureController.kt (interface), MyFeatureControllerImpl.kt, MyFeatureScreen.kt
- Shared UI components go in
components/
- Domain models go in
domain/ organized by feature sub-package