An open API service indexing awesome lists of open source software.

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.

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

screencast

## 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