Skip to content

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, and widgets.

Notifications You must be signed in to change notification settings

memokr/FeedbackAssistant

Repository files navigation

Feedback Assistant Clone

FeedbackAssistant 
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.

Technologies

SwiftUI Core Data CloudKit Accessibility Testing Spotlight Store Kit Widgets
SwiftUI CoreData CloudKit Accessibility SwiftTesting Spotlight StoreKit WidgetKit

Features

  • 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.

Installation

Prerequisites

  • 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

Steps

  1. Clone the repository:
    git clone https://github.com/yourusername/FeedbackAssistantClone.git
  2. Navigate to the project directory:
    cd FeedbackAssistantClone
  3. Open the .xcodeproj or .xcworkspace file in Xcode:
    open FeedbackAssistantClone.xcodeproj
  4. Install SwiftLint if it's not already installed:
    brew install swiftlint
  5. Build and run the project in Xcode.

Usage

  • 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).

Code Structure

  • 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: .strings files for each supported language.
  • SwiftLint Configuration: .swiftlint.yml file for linting rules.

Localization

To add support for a new language:

  1. Go to the project navigator in Xcode.
  2. Select the Localizable.strings file.
  3. Add new translations for the new language.
  4. Update the app’s user interface strings to use NSLocalizedString for dynamic translations.

SwiftLint

To ensure that the code follows best practices and styling conventions, SwiftLint is integrated into the project. To run SwiftLint, execute:

swiftlint

You can modify the linting rules by editing the .swiftlint.yml file.

Documentation

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:

  1. Use the /// syntax to add documentation to methods, classes, structs, etc.
  2. Follow Apple's Documentation Guidelines.

About

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, and widgets.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published