Created
April 23, 2024 15:02
-
-
Save tobitech/e3a57a6296ffc93a6c91afe1f6802faf to your computer and use it in GitHub Desktop.
Ratio App Modularisation Structure.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // swift-tools-version: 5.7 | |
| import PackageDescription | |
| let package = Package( | |
| name: "ratioapp", | |
| platforms: [ | |
| .iOS("16.6") | |
| ], | |
| products: [ | |
| .library(name: "AddTransactionFeature", targets: ["AddTransactionFeature"]), | |
| .library(name: "AppCore", targets: ["AppCore"]), | |
| .library(name: "AuthenticationClient", targets: ["AuthenticationClient"]), | |
| .library(name: "AuthenticationClientLive",targets: ["AuthenticationClientLive"]), | |
| .library(name: "BackgroundTasksClient",targets: ["BackgroundTasksClient"]), | |
| .library(name: "BadgesFeature", targets: ["BadgesFeature"]), | |
| .library(name: "BillsFeature", targets: ["BillsFeature"]), | |
| .library(name: "ChooseCategoryFeature", targets: ["ChooseCategoryFeature"]), | |
| .library(name: "ChooseCurrencyFeature", targets: ["ChooseCurrencyFeature"]), | |
| .library(name: "DataStoreClient", targets: ["DataStoreClient"]), | |
| .library(name: "DataStoreClientLive", targets: ["DataStoreClientLive"]), | |
| .library(name: "DateHelpers", targets: ["DateHelpers"]), | |
| .library(name: "FileManagerClient", targets: ["FileManagerClient"]), | |
| .library(name: "InsightsFeature", targets: ["InsightsFeature"]), | |
| .library(name: "MainFeature", targets: ["MainFeature"]), | |
| .library(name: "MerchantFeature", targets: ["MerchantFeature"]), | |
| .library(name: "PaywallFeature", targets: ["PaywallFeature"]), | |
| .library(name: "ProfileFeature", targets: ["ProfileFeature"]), | |
| .library(name: "ObjectStorageClient", targets: ["ObjectStorageClient"]), | |
| .library(name: "ObjectStorageClientLive", targets: ["ObjectStorageClientLive"]), | |
| .library(name: "OnboardingFeature", targets: ["OnboardingFeature"]), | |
| .library(name: "OverviewFeature", targets: ["OverviewFeature"]), | |
| .library(name: "RatioUI", targets: ["RatioUI"]), | |
| .library(name: "SearchFeature", targets: ["SearchFeature"]), | |
| .library(name: "SettingsFeature", targets: ["SettingsFeature"]), | |
| .library(name: "SharedModels", targets: ["SharedModels"]), | |
| .library(name: "StoreKitClient", targets: ["StoreKitClient"]), | |
| .library(name: "StreaksFeature", targets: ["StreaksFeature"]), | |
| .library(name: "SwiftUIHelpers", targets: ["SwiftUIHelpers"]), | |
| .library(name: "TCAHelpers", targets: ["TCAHelpers"]), | |
| .library(name: "TransactionDetailsFeature", targets: ["TransactionDetailsFeature"]), | |
| .library(name: "TransactionsListFeature", targets: ["TransactionsListFeature"]), | |
| .library(name: "UIApplicationClient", targets: ["UIApplicationClient"]), | |
| .library(name: "UserDefaultsClient", targets: ["UserDefaultsClient"]), | |
| .library(name: "UserNotificationsClient", targets: ["UserNotificationsClient"] | |
| ) | |
| ], | |
| dependencies: [ | |
| .package(url: "https://github.com/pointfreeco/swift-composable-architecture", from: "1.9.3"), | |
| .package(url: "https://github.com/pointfreeco/swiftui-navigation", from: "1.2.1"), | |
| .package(url: "https://github.com/realm/realm-swift.git", from: "10.47.0"), | |
| .package(url: "https://github.com/pointfreeco/swift-dependencies", from: "1.2.2"), | |
| .package(url: "https://github.com/apple/swift-algorithms", from: "1.1.0"), | |
| .package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "1.1.0"), | |
| .package(url: "https://github.com/aws-amplify/amplify-swift", from: "2.27.1") | |
| ], | |
| targets: [ | |
| .target( | |
| name: "AddTransactionFeature", | |
| dependencies: [ | |
| "AuthenticationClient", | |
| "ChooseCategoryFeature", | |
| "ChooseCurrencyFeature", | |
| "DataStoreClient", | |
| "FileManagerClient", | |
| "MerchantFeature", | |
| "ObjectStorageClient", | |
| "PaywallFeature", | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| "TCAHelpers", | |
| "UserNotificationsClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "AddTransactionFeatureTests", | |
| dependencies: ["AddTransactionFeature"] | |
| ), | |
| .target( | |
| name: "AppCore", | |
| dependencies: [ | |
| "BackgroundTasksClient", | |
| "MainFeature", | |
| "OnboardingFeature", | |
| "PaywallFeature", | |
| "SharedModels", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| ] | |
| ), | |
| .testTarget( | |
| name: "AppCoreTests", | |
| dependencies: ["AppCore"] | |
| ), | |
| .target( | |
| name: "AuthenticationClient", | |
| dependencies: [ | |
| "SharedModels", | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ), | |
| .target( | |
| name: "AuthenticationClientLive", | |
| dependencies: [ | |
| "AuthenticationClient", | |
| .product(name: "RealmSwift", package: "realm-swift") | |
| ] | |
| ), | |
| .target( | |
| name: "BackgroundTasksClient", | |
| dependencies: [ | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ), | |
| .target( | |
| name: "BadgesFeature", | |
| dependencies: [ | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "BadgesFeatureTests", | |
| dependencies: ["BadgesFeature"] | |
| ), | |
| .target( | |
| name: "BillsFeature", | |
| dependencies: [ | |
| "AddTransactionFeature", | |
| "BadgesFeature", | |
| "DataStoreClient", | |
| "DateHelpers", | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| "TransactionDetailsFeature", | |
| .product(name: "Algorithms", package: "swift-algorithms"), | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "BillsFeatureTests", | |
| dependencies: ["BillsFeature"] | |
| ), | |
| .target( | |
| name: "ChooseCategoryFeature", | |
| dependencies: [ | |
| "AuthenticationClient", | |
| "DataStoreClient", | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| "TCAHelpers", | |
| "UserDefaultsClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "ChooseCategoryFeatureTests", | |
| dependencies: ["ChooseCategoryFeature"] | |
| ), | |
| .target( | |
| name: "ChooseCurrencyFeature", | |
| dependencies: [ | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| ] | |
| ), | |
| .testTarget( | |
| name: "ChooseCurrencyFeatureTests", | |
| dependencies: ["ChooseCurrencyFeature"] | |
| ), | |
| .target( | |
| name: "DataStoreClient", | |
| dependencies: [ | |
| "DateHelpers", | |
| "SharedModels", | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ], | |
| resources: [ | |
| .process("mocks") | |
| ] | |
| ), | |
| .target( | |
| name: "DataStoreClientLive", | |
| dependencies: [ | |
| "DataStoreClient", | |
| .product(name: "RealmSwift", package: "realm-swift") | |
| ] | |
| ), | |
| .target( | |
| name: "DateHelpers", | |
| dependencies: [ | |
| .product(name: "Dependencies", package: "swift-dependencies") | |
| ] | |
| ), | |
| .target( | |
| name: "FileManagerClient", | |
| dependencies: [ | |
| "SharedModels", | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ), | |
| .target( | |
| name: "InsightsFeature", | |
| dependencies: [ | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| "DataStoreClient", | |
| "TCAHelpers", | |
| "TransactionDetailsFeature", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "InsightsFeatureTests", | |
| dependencies: ["InsightsFeature"] | |
| ), | |
| .target( | |
| name: "MainFeature", | |
| dependencies: [ | |
| "BillsFeature", | |
| "InsightsFeature", | |
| "OverviewFeature", | |
| "ProfileFeature", | |
| "SharedModels", | |
| "UserDefaultsClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "MainFeatureTests", | |
| dependencies: ["MainFeature"] | |
| ), | |
| .target( | |
| name: "MerchantFeature", | |
| dependencies: [ | |
| "AuthenticationClient", | |
| "DataStoreClient", | |
| "RatioUI", | |
| "SharedModels", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "MerchantFeatureTests", | |
| dependencies: ["MerchantFeature"] | |
| ), | |
| .target( | |
| name: "ObjectStorageClient", | |
| dependencies: [ | |
| "SharedModels", | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ), | |
| .target( | |
| name: "ObjectStorageClientLive", | |
| dependencies: [ | |
| "ObjectStorageClient", | |
| .product(name: "Amplify", package: "amplify-swift"), | |
| .product(name: "AWSCognitoAuthPlugin", package: "amplify-swift"), | |
| .product(name: "AWSS3StoragePlugin", package: "amplify-swift") | |
| ] | |
| ), | |
| .target( | |
| name: "OnboardingFeature", | |
| dependencies: [ | |
| "AuthenticationClient", | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| ] | |
| ), | |
| .testTarget( | |
| name: "OnboardingFeatureTests", | |
| dependencies: ["OnboardingFeature"] | |
| ), | |
| .target( | |
| name: "OverviewFeature", | |
| dependencies: [ | |
| "AddTransactionFeature", | |
| "BadgesFeature", | |
| "BillsFeature", | |
| "DataStoreClient", | |
| "ProfileFeature", | |
| "RatioUI", | |
| "SearchFeature", | |
| "SharedModels", | |
| "StreaksFeature", | |
| "SwiftUIHelpers", | |
| "TransactionDetailsFeature", | |
| "TransactionsListFeature", | |
| "UIApplicationClient", | |
| "UserDefaultsClient", | |
| "UserNotificationsClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "OverviewFeatureTests", | |
| dependencies: ["OverviewFeature"] | |
| ), | |
| .target( | |
| name: "PaywallFeature", | |
| dependencies: [ | |
| "DataStoreClient", | |
| "RatioUI", | |
| "SharedModels", | |
| "StoreKitClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "PaywallFeatureTests", | |
| dependencies: ["PaywallFeature"] | |
| ), | |
| .target( | |
| name: "ProfileFeature", | |
| dependencies: [ | |
| "AuthenticationClient", | |
| "BadgesFeature", | |
| "DataStoreClient", | |
| "ObjectStorageClient", | |
| "RatioUI", | |
| "SettingsFeature", | |
| "SharedModels", | |
| "UIApplicationClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "ProfileFeatureTests", | |
| dependencies: ["ProfileFeature"] | |
| ), | |
| .target( | |
| name: "RatioUI", | |
| dependencies: [ | |
| "SharedModels", | |
| "SwiftUIHelpers" | |
| ] | |
| ), | |
| .target( | |
| name: "SearchFeature", | |
| dependencies: [ | |
| "DataStoreClient", | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| "TransactionDetailsFeature", | |
| "TransactionsListFeature", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "SearchFeatureTests", | |
| dependencies: ["SearchFeature"] | |
| ), | |
| .target( | |
| name: "SettingsFeature", | |
| dependencies: [ | |
| "AuthenticationClient", | |
| "ChooseCurrencyFeature", | |
| "ChooseCategoryFeature", | |
| "MerchantFeature", | |
| "PaywallFeature", | |
| "RatioUI", | |
| "SharedModels", | |
| "StoreKitClient", | |
| "SwiftUIHelpers", | |
| "TCAHelpers", | |
| "UIApplicationClient", | |
| "UserDefaultsClient", | |
| "UserNotificationsClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "SwiftUINavigation", package: "swiftui-navigation") | |
| ], | |
| resources: [ | |
| .process("resources") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "SettingsFeatureTests", | |
| dependencies: ["SettingsFeature"] | |
| ), | |
| .target( | |
| name: "SharedModels", | |
| dependencies: [ | |
| "DateHelpers", | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ), | |
| .target( | |
| name: "StoreKitClient", | |
| dependencies: [ | |
| "DataStoreClient", | |
| "SharedModels", | |
| "UserDefaultsClient", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| .product(name: "XCTestDynamicOverlay", package: "xctest-dynamic-overlay"), | |
| ], | |
| resources: [ | |
| .process("resources") | |
| ] | |
| ), | |
| .target( | |
| name: "StreaksFeature", | |
| dependencies: [ | |
| "DataStoreClient", | |
| "SharedModels", | |
| "RatioUI", | |
| "SwiftUIHelpers", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "StreaksFeatureTests", | |
| dependencies: ["StreaksFeature"] | |
| ), | |
| .target( | |
| name: "SwiftUIHelpers", | |
| dependencies: [] | |
| ), | |
| .target( | |
| name: "TCAHelpers", | |
| dependencies: [ | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture") | |
| ] | |
| ), | |
| .target( | |
| name: "TransactionDetailsFeature", | |
| dependencies: [ | |
| "AddTransactionFeature", | |
| "DataStoreClient", | |
| "FileManagerClient", | |
| "ObjectStorageClient", | |
| "SharedModels", | |
| "RatioUI", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "TransactionDetailsFeatureTests", | |
| dependencies: ["TransactionDetailsFeature"] | |
| ), | |
| .target( | |
| name: "TransactionsListFeature", | |
| dependencies: [ | |
| "AddTransactionFeature", | |
| "DataStoreClient", | |
| "SharedModels", | |
| "RatioUI", | |
| "TransactionDetailsFeature", | |
| .product(name: "ComposableArchitecture", package: "swift-composable-architecture") | |
| ] | |
| ), | |
| .testTarget( | |
| name: "TransactionsListFeatureTests", | |
| dependencies: ["TransactionsListFeature"] | |
| ), | |
| .target( | |
| name: "UIApplicationClient", | |
| dependencies: [ | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ), | |
| .target( | |
| name: "UserDefaultsClient", | |
| dependencies: [ | |
| "SharedModels", | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ), | |
| .target( | |
| name: "UserNotificationsClient", | |
| dependencies: [ | |
| "SharedModels", | |
| .product(name: "Dependencies", package: "swift-dependencies"), | |
| ] | |
| ) | |
| ] | |
| ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment