- Use PascalCase
- Example: DuplicateFilter, XPManager
- Use camelCase
- Example: makeFingerprint(), getOrAssignDeviceId()
- Use camelCase
- Example: deviceCount, isScanning
- Use UPPER_CASE
- Example: MAX_DEVICES
- Use snake_case
- Example: duplicate_filter.cpp
- Avoid Arduino-specific types in core logic
- Prefer std:: types over Arduino types
- Keep hardware and logic separated
- Core logic must be testable in native environment
- No NimBLE / Arduino dependencies in core/