https://github.com/flini1we/healthreminder
iOS application for managing health-related reminders, built with UIKit, SwiftUI.
https://github.com/flini1we/healthreminder
animations builder-pattern combine-framework deeplink factory-pattern ios localnotifications service-locator snapshottest swift swiftdata swiftui testing uikit uitests unittests viper
Last synced: about 1 year ago
JSON representation
iOS application for managing health-related reminders, built with UIKit, SwiftUI.
- Host: GitHub
- URL: https://github.com/flini1we/healthreminder
- Owner: flini1we
- Created: 2025-06-15T22:47:00.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-16T14:22:53.000Z (about 1 year ago)
- Last Synced: 2025-06-24T03:05:01.084Z (about 1 year ago)
- Topics: animations, builder-pattern, combine-framework, deeplink, factory-pattern, ios, localnotifications, service-locator, snapshottest, swift, swiftdata, swiftui, testing, uikit, uitests, unittests, viper
- Language: Swift
- Homepage:
- Size: 33.5 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Health Reminder
A modern iOS application for managing health-related reminders, built with UIKit, SwiftUI, and following clean architecture principles.
## Features
- 📱 Create and manage health-related reminders
- 🔔 Local notifications for timely reminders
- 🎯 Multiple reminder categories (Water, Exercise, Vitamins, Sleep, etc.)
- 🔄 Real-time updates using Combine
- 🔗 Deep linking support
- 📊 Detailed reminder information
- 🎨 Modern UI with UIKit and SwiftUI integration

## Technical Stack
- **Architecture**: VIPER, Service Locator
- **UI**: UIKit, SwiftUI
- **Data Flow**: Combine
- **Persistence**: SwiftData
- **Testing**: XCTest, Snapshot Testing
- **Minimum iOS Version**: iOS 17.0+
## Project Structure
```
HealthReminder/
├── Application/ # App configuration and setup
├── Assembly/ # Dependency injection
├── Builders/ # Builder pattern implementations
├── Custom/ # Custom UI components
├── Extensions/ # Swift extensions
├── Factories/ # Factory pattern implementations
├── Formatters/ # Data formatting utilities
├── Managers/ # Various managers
├── Models/ # Data models
├── Modules/ # Feature modules
│ ├── RemindsModule/ # Main reminders list
│ ├── RemindDetail/ # Reminder details
│ └── CreateRemindModule/ # Create new reminder
├── Resources/ # Assets and resources
├── Services/ # Business logic services
└── Support/ # Supporting files
```
## Architecture
The project follows a hybrid architecture approach:
- **VIPER** for UIKit-based screens
- **Service Locator** for dependency management
- **Builder Pattern** for object creation
- **Factory Method** for notification generation
- **Combine** for reactive data flow
## Features Implementation
### Main Screen (UIKit)
- Displays list of reminders using UITableView
- VIPER architecture implementation
- Real-time updates via Combine
- "+" button to create new reminders
### Create Reminder Screen (SwiftUI)
- Text input and interval selection
- Category selection with custom options
- Builder pattern for Reminder creation
- Integration via UIHostingController
### Reminder Details Screen (SwiftUI)
- Deep linking support
- Opens from list or push notification
## Testing
The project includes comprehensive testing:
### Unit Tests
- ReminderService logic
- NotificationFactory functionality
- Data persistence
### Snapshot Tests
- CreateReminderView
- ReminderDetailView
### UI Tests
- Reminder creation flow
- Deep linking from notifications
- User interaction scenarios
## Requirements
- iOS 17.0+
- Xcode 14.0+
- Swift 5.0+
## GitHub Topics
```
swift
ios
swiftui
uikit
viper
combine
swiftdata
health
reminders
notifications
local-notifications
deeplink
clean-architecture
service-locator
builder-pattern
factory-pattern
```
## Author
Danil Zabinskij
## Acknowledgments
- VIPER architecture pattern
- SwiftUI and UIKit integration
- Combine framework
- Local notifications system