This project is a clone of Apple's Feedback Assistant native app. Built with SwiftUI and Core Data, it incorporates powerful features like CloudKit synchronization, advanced filtering, sorting, and widgets.
The app is optimized for multiple platforms, including macOS, watchOS, and visionOS, ensuring a consistent experience across all Apple devices.
| SwiftUI | CoreData | CloudKit | Accessibility | SwiftTesting | Spotlight | StoreKit | WidgetKit |
- Issues Management: Create, update, and delete issues entries with ease.
- Core Data: Persistent storage of feedback data using Apple's Core Data framework.
- CloudKit Integration: Synchronize issues data across devices with iCloud support.
- Advanced Filtering and Sorting: Powerful tools to filter and sort feedback entries.
- JSON File Reading: Load and process external JSON files for importing/exporting data.
- Localization: Support for multiple languages (English, Spanish, Italian).
- Accessibility: Fully optimized for accessibility with VoiceOver and Dynamic Type support.
- Testing: Comprehensive Unit and UI tests for ensuring app reliability and stability.
- MVC and MVVM Architecture: Combines Model-View-Controller and Model-View-ViewModel architectures for robust and scalable code.
- Spotlight Integration: Search feedback entries directly from macOS or iOS Spotlight.
- Local Notifications: Reminders and updates via local notifications.
- StoreKit and In-App Purchases: Support for app monetization through in-app purchases.
- Widgets: Interactive widgets for quick access to feedback data.
- Optimized for macOS, watchOS, and visionOS: A seamless experience across Apple platforms.
- SwiftLint: Ensure consistent coding style and adherence to best practices with SwiftLint.
- Xcode 14.0 or newer
- Swift 5.5 or newer
- iOS 15.0 or later (can be modified if targeting earlier versions)
- SwiftLint installed via Homebrew or CocoaPods
- Clone the repository:
git clone https://github.com/yourusername/FeedbackAssistantClone.git
- Navigate to the project directory:
cd FeedbackAssistantClone - Open the
.xcodeprojor.xcworkspacefile in Xcode:open FeedbackAssistantClone.xcodeproj
- Install SwiftLint if it's not already installed:
brew install swiftlint
- Build and run the project in Xcode.
- Launch the app to start managing feedbacks.
- Use the app in different languages by changing your device's language in Settings.
- Review the code documentation directly in Xcode (via Quick Help or Documentation popup).
- Model: Core Data models that represent feedbacks and other entities.
- View: SwiftUI views that provide the user interface.
- ViewModel: State management using observable objects and bindings.
- Localization:
.stringsfiles for each supported language. - SwiftLint Configuration:
.swiftlint.ymlfile for linting rules.
To add support for a new language:
- Go to the project navigator in Xcode.
- Select the
Localizable.stringsfile. - Add new translations for the new language.
- Update the app’s user interface strings to use
NSLocalizedStringfor dynamic translations.
To ensure that the code follows best practices and styling conventions, SwiftLint is integrated into the project. To run SwiftLint, execute:
swiftlintYou can modify the linting rules by editing the .swiftlint.yml file.
This project uses Swift's built-in documentation system. Code comments and documentation can be found by holding Option and clicking on a symbol or by viewing Quick Help in Xcode.
To add or edit documentation:
- Use the
///syntax to add documentation to methods, classes, structs, etc. - Follow Apple's Documentation Guidelines.