A modern iOS task management application built with Swift, featuring a sophisticated theme management system and clean architecture. This project marks my first experience with SwiftUI and modern iOS development practices.
- MVVM Architecture: Clean separation of concerns with ViewModels handling business logic and Views focusing on UI presentation
- Core Data: Robust data persistence layer for task management
- Scene-Based Architecture: Modern iOS app structure utilizing
UIWindowScenefor better window management - Theme Management System: Advanced theme switching capabilities with system-wide application
- SwiftUI Integration: First experience with SwiftUI, combining it with UIKit for enhanced UI development
- Charts Framework: Integration of the popular Charts library for data visualization
The app features a sophisticated theme management system implemented through ThemeManager:
- Singleton Pattern: Global access to theme settings through
ThemeManager.shared - Scene-Based Theme Application: Utilizes
UIApplication.shared.connectedScenesto apply themes across all windows - Persistent Theme Storage: Theme preferences are stored in
UserDefaultsfor persistence - Dynamic Theme Switching: Real-time theme updates across all app windows
- System Integration: Seamless integration with iOS system appearance settings
- Dynamic task list with Core Data integration
- Smooth animations and transitions
- Custom UI components for enhanced user experience
- Theme customization options
- System-wide theme persistence
- Real-time theme preview
- Historical task management
- Efficient data retrieval and display
- Custom sorting and filtering options
The app incorporates modern iOS development practices:
- Hybrid UI Approach: Combining UIKit and SwiftUI for optimal performance and flexibility
- Charts Integration:
- Beautiful data visualization using the Charts framework
- Custom chart configurations for task statistics
- Interactive chart elements with user feedback
- Dynamic data updates and animations
- SwiftUI Learning Journey:
- First experience with declarative UI programming
- Implementation of SwiftUI views alongside UIKit components
- State management using SwiftUI's property wrappers
- Custom SwiftUI components development
- Scene-Based Window Management: Advanced understanding of iOS window and scene hierarchy
- Custom View Components: Reusable UI elements for consistent design
- Protocol-Oriented Programming: Clean interfaces for component communication
- Extension-Based Utilities: Swift extensions for enhanced functionality
- Observer Pattern: Efficient state management and UI updates
- Modern UI Development: First-hand experience with SwiftUI and Charts framework
- Data Visualization: Professional-grade charts and graphs for task statistics
The app follows a well-structured architecture:
ToDo/
├── MainScreen/ # Main task management interface
├── SettingsScreen/ # App configuration and theme settings
├── ArchiveScreen/ # Archived tasks management
├── CustomView/ # Reusable UI components
├── Extension/ # Swift extensions
├── Observers/ # State observation patterns
├── Model/ # Data models and business logic
├── Helper/ # Utility functions
├── Protocol/ # Protocol definitions
├── CoreData/ # Core Data stack and operations
└── ThemeManager.swift # Theme management system
This implementation showcases:
- Understanding of iOS scene-based architecture
- Efficient window management across multiple scenes
- Persistent theme storage
- Clean singleton pattern implementation
- iOS 15.0+
- Xcode 13.0+
- Swift 5.0+
- Clone the repository
- Open
ToDo.xcodeprojin Xcode - Build and run the project
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details