remindwall
Back to remindwall — Current RemindWall
- .claude/
- .github/
- ci_scripts/
- ddcd/
- RemindWall/
- RemindWall.xcodeproj/
- RemindWallUITests/
- RWPureSwift/
- scripts/
- .gitignore 95 B
- CLAUDE.md 6.6 KB
- PLAN.md 20.8 KB
- PLAN_ARCHIVE.md 40.5 KB
- README.md 3.1 KB
- RemindWall.xctestplan 2.7 KB
- SPEC-DASHBOARD.md 7.7 KB
README.md
RemindWall
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.
Features
- 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
Requirements
- Xcode 26+
- iOS 26+ / macCatalyst 26+
- Swift 6.2
Getting Started
- Clone the repository
- Open
RemindWall.xcodeprojin Xcode - Select the target:
- RemindWall for macOS/macCatalyst
- RemindWalliOS for iOS
- Build and run
Project Structure
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/
Architecture
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
Testing
Tests use Swift's native Testing framework (@Test, @Suite) and TCA's TestStore for feature testing.
cd RWPureSwift
swift test
License
Private project - all rights reserved.