A cross-platform iOS and macOS (Catalyst) SwiftUI application that turns a device into a smart photo frame with reminder tracking, calendar integration, and NFC tag scanning.
- Photo Slideshow - Select a photo album and display it as a slideshow with Ken Burns animation and live photo support
- Reminder Tracking - Track multiple people ("trackees") with configurable reminder schedules and days of the week
- NFC Tag Scanning - Associate NFC tags with trackees for quick check-in
- Calendar Integration - Display upcoming events from a selected calendar alongside the slideshow
- Screen Off Scheduling - Configure automatic screen dimming based on time-of-day rules
- External Monitor Brightness - DDC/CI brightness control for external monitors on macCatalyst
- Xcode 26+
- iOS 26+ / macCatalyst 26+
- Swift 6.2
- Clone the repository
- Open
RemindWall.xcodeprojin Xcode - Select the target:
- RemindWall for macOS/macCatalyst
- RemindWalliOS for iOS
- Build and run
The app is split into two Xcode app targets that share all code through RWPureSwift, a local Swift Package:
RemindWall/
├── RemindWall/ # macCatalyst app target
├── RemindWalliOS/ # iOS app target (if present)
└── RWPureSwift/ # Shared Swift Package
├── Sources/
│ ├── AppNavigation/ # Top-level navigation
│ ├── AppTypes/ # Shared value types
│ ├── CalendarAsync/ # EventKit async wrapper
│ ├── Dao/ # SQLite database layer
│ ├── Dashboard/ # Main dashboard (slideshow + alerts + calendar)
│ ├── EditSettingsNew/ # Settings UI (album, calendar, trackees, reminders)
│ ├── PhotoKitAsync/ # Photos framework wrapper
│ ├── ScreenControl/ # Brightness control (UIKit / DDC-CI)
│ ├── ScreenOffMonitor/# Scheduled screen dimming
│ ├── Slideshow/ # Photo slideshow with Ken Burns effect
│ ├── TagScanLoader/ # NFC tag + database bridge
│ ├── TagScanner/ # NFC tag reading
│ └── Utility/ # Small helpers
└── Tests/
Built with The Composable Architecture (TCA) from Point-Free. Each feature is a @Reducer with clearly defined State, Action, and composition via Scope and store.scope().
Key libraries:
- swift-composable-architecture - State management and side effects
- swift-dependencies - Dependency injection and testability
- sqlite-data / swift-structured-queries - Type-safe SQLite database
- swift-tagged - Type-safe identifiers
- swift-concurrency-deadline - Async timeout utilities
Tests use Swift's native Testing framework (@Test, @Suite) and TCA's TestStore for feature testing.
cd RWPureSwift
swift testPrivate project - all rights reserved.