~cytrogen/vbhelper

ref: e9d2cce8024f3fd3bacb258c183c31f59d3f4b40 vbhelper/.claude/rules/project-structure.md -rw-r--r-- 1.1 KiB
e9d2cce8 — Cytrogen Add UnifiedPush notification system with Ktor server a month ago

#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