Imported from YannisDC/ColmiSmartRing (
AGENTS.md). Install upstream withnpx skills add YannisDC/ColmiSmartRing. Copyright stays with the author.
šļø Project Setup
We selected the SwiftUI Blueprint as the architecture for the app since it's lightweight, based on MVVM with a nice separation of concern and features and allows for quick iteration with SwiftUI.
Folder Structure
App
āāā Code
ā āāā Features
ā ā āāā Feature-X
ā ā ā āāā Actions
ā ā ā āāā Models
ā ā ā āāā Screens
ā ā ā āāā ViewModels
ā ā ā āāā Views
ā ā ā
ā ā āāā Feature-Y
ā ā āāā Actions
ā ā āāā Models
ā ā āāā Screens
ā ā āāā ViewModels
ā ā āāā Views
ā ā
ā āāā Utilities
ā
āāā Environments
ā āāā DEV
ā āāā PROD
ā
āāā Preview Content (compiles during development only)
ā
āāā Resources
ā
āāā Supporting Files (Contains the high level app files)
š Translations
- Always provide translations for all user-facing text in the app
- Use the localization system (e.g.,
NSLocalizedStringor SwiftUI'sLocalizedStringKey) - Never hardcode user-facing strings directly in code
- Ensure all new features include proper localization support
āæ Accessibility
- Keep accessibility perfect at all times
- Add proper accessibility labels, hints, and traits to all UI elements
- Test with VoiceOver and other accessibility features
- Ensure sufficient color contrast ratios
- Support Dynamic Type for text sizing
- Make all interactive elements accessible via keyboard navigation
- Test accessibility features during development, not as an afterthought
šØ UI/UX Guidelines
- Use native iOS/macOS design patterns
- Provide clear visual feedback for file operations
- Show loading states for async operations
- Use appropriate system icons and symbols
- Support Dark Mode
- Follow accessibility guidelines (see Accessibility section above)
