├── .github └── workflows │ └── ios.yml ├── .gitignore ├── Beers.entitlements ├── Beers.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ ├── WorkspaceSettings.xcsettings │ │ └── swiftpm │ │ └── Package.resolved ├── xcshareddata │ └── xcschemes │ │ └── Beers.xcscheme └── xcuserdata │ └── crelies.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── BeersTests └── BeersTests.swift ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── Shared ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── BeerApp.swift ├── Features │ ├── BeerDetail │ │ └── TCA │ │ │ ├── BeerDetailFeature.swift │ │ │ ├── BeerDetailState+view.swift │ │ │ ├── BeerDetailView+Action.swift │ │ │ ├── BeerDetailView+State.swift │ │ │ ├── BeerDetailView.Action+feature.swift │ │ │ └── BeerDetailView.swift │ └── BeerList │ │ ├── BeerRowsFeature.swift │ │ ├── List │ │ └── TCA │ │ │ ├── BeerListCancelID.swift │ │ │ ├── BeerListError.swift │ │ │ ├── BeerListFeature.swift │ │ │ ├── BeerListState+view.swift │ │ │ ├── BeerListView+Action.swift │ │ │ ├── BeerListView+State.swift │ │ │ ├── BeerListView.Action+feature.swift │ │ │ └── BeerListView.swift │ │ └── Row │ │ └── TCA │ │ ├── BeerListRowFeature.swift │ │ ├── BeerListRowState+view.swift │ │ ├── BeerListRowView+Action.swift │ │ ├── BeerListRowView+State.swift │ │ ├── BeerListRowView.Action+feature.swift │ │ └── BeerListRowView.swift └── Global │ ├── App │ └── TCA │ │ ├── AppFeature.swift │ │ ├── AppState+view.swift │ │ ├── AppView+Action.swift │ │ ├── AppView+State.swift │ │ ├── AppView.Action+feature.swift │ │ └── AppView.swift │ ├── Clients │ ├── BeerClient+live.swift │ └── BeerClient.swift │ ├── Extensions │ └── ReducerProtocol+optionalForEach.swift │ ├── Models │ ├── Beer+mock.swift │ ├── Beer.swift │ ├── BeerError.swift │ ├── BeersResult.swift │ ├── Dependencies.swift │ └── ViewState.swift │ ├── Services │ ├── BeerAPIService.swift │ ├── BeerStore.swift │ ├── DefaultBeerAPIService.swift │ └── DefaultBeerStore.swift │ ├── StyleConstants.swift │ └── Views │ └── BeerView.swift └── screenshots ├── mac1.png ├── mac2.png ├── phone1.png └── phone2.png /.github/workflows/ios.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/.github/workflows/ios.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/.gitignore -------------------------------------------------------------------------------- /Beers.entitlements: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.entitlements -------------------------------------------------------------------------------- /Beers.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /Beers.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /Beers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -------------------------------------------------------------------------------- /Beers.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings -------------------------------------------------------------------------------- /Beers.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved -------------------------------------------------------------------------------- /Beers.xcodeproj/xcshareddata/xcschemes/Beers.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.xcodeproj/xcshareddata/xcschemes/Beers.xcscheme -------------------------------------------------------------------------------- /Beers.xcodeproj/xcuserdata/crelies.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Beers.xcodeproj/xcuserdata/crelies.xcuserdatad/xcschemes/xcschememanagement.plist -------------------------------------------------------------------------------- /BeersTests/BeersTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/BeersTests/BeersTests.swift -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Gemfile -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Gemfile.lock -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/README.md -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /Shared/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /Shared/BeerApp.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/BeerApp.swift -------------------------------------------------------------------------------- /Shared/Features/BeerDetail/TCA/BeerDetailFeature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerDetail/TCA/BeerDetailFeature.swift -------------------------------------------------------------------------------- /Shared/Features/BeerDetail/TCA/BeerDetailState+view.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerDetail/TCA/BeerDetailState+view.swift -------------------------------------------------------------------------------- /Shared/Features/BeerDetail/TCA/BeerDetailView+Action.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerDetail/TCA/BeerDetailView+Action.swift -------------------------------------------------------------------------------- /Shared/Features/BeerDetail/TCA/BeerDetailView+State.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerDetail/TCA/BeerDetailView+State.swift -------------------------------------------------------------------------------- /Shared/Features/BeerDetail/TCA/BeerDetailView.Action+feature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerDetail/TCA/BeerDetailView.Action+feature.swift -------------------------------------------------------------------------------- /Shared/Features/BeerDetail/TCA/BeerDetailView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerDetail/TCA/BeerDetailView.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/BeerRowsFeature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/BeerRowsFeature.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListCancelID.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListCancelID.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListError.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListError.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListFeature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListFeature.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListState+view.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListState+view.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListView+Action.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListView+Action.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListView+State.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListView+State.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListView.Action+feature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListView.Action+feature.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/List/TCA/BeerListView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/List/TCA/BeerListView.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/Row/TCA/BeerListRowFeature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/Row/TCA/BeerListRowFeature.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/Row/TCA/BeerListRowState+view.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/Row/TCA/BeerListRowState+view.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/Row/TCA/BeerListRowView+Action.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/Row/TCA/BeerListRowView+Action.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/Row/TCA/BeerListRowView+State.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/Row/TCA/BeerListRowView+State.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/Row/TCA/BeerListRowView.Action+feature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/Row/TCA/BeerListRowView.Action+feature.swift -------------------------------------------------------------------------------- /Shared/Features/BeerList/Row/TCA/BeerListRowView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Features/BeerList/Row/TCA/BeerListRowView.swift -------------------------------------------------------------------------------- /Shared/Global/App/TCA/AppFeature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/App/TCA/AppFeature.swift -------------------------------------------------------------------------------- /Shared/Global/App/TCA/AppState+view.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/App/TCA/AppState+view.swift -------------------------------------------------------------------------------- /Shared/Global/App/TCA/AppView+Action.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/App/TCA/AppView+Action.swift -------------------------------------------------------------------------------- /Shared/Global/App/TCA/AppView+State.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/App/TCA/AppView+State.swift -------------------------------------------------------------------------------- /Shared/Global/App/TCA/AppView.Action+feature.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/App/TCA/AppView.Action+feature.swift -------------------------------------------------------------------------------- /Shared/Global/App/TCA/AppView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/App/TCA/AppView.swift -------------------------------------------------------------------------------- /Shared/Global/Clients/BeerClient+live.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Clients/BeerClient+live.swift -------------------------------------------------------------------------------- /Shared/Global/Clients/BeerClient.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Clients/BeerClient.swift -------------------------------------------------------------------------------- /Shared/Global/Extensions/ReducerProtocol+optionalForEach.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Extensions/ReducerProtocol+optionalForEach.swift -------------------------------------------------------------------------------- /Shared/Global/Models/Beer+mock.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Models/Beer+mock.swift -------------------------------------------------------------------------------- /Shared/Global/Models/Beer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Models/Beer.swift -------------------------------------------------------------------------------- /Shared/Global/Models/BeerError.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Models/BeerError.swift -------------------------------------------------------------------------------- /Shared/Global/Models/BeersResult.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Models/BeersResult.swift -------------------------------------------------------------------------------- /Shared/Global/Models/Dependencies.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Models/Dependencies.swift -------------------------------------------------------------------------------- /Shared/Global/Models/ViewState.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Models/ViewState.swift -------------------------------------------------------------------------------- /Shared/Global/Services/BeerAPIService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Services/BeerAPIService.swift -------------------------------------------------------------------------------- /Shared/Global/Services/BeerStore.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Services/BeerStore.swift -------------------------------------------------------------------------------- /Shared/Global/Services/DefaultBeerAPIService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Services/DefaultBeerAPIService.swift -------------------------------------------------------------------------------- /Shared/Global/Services/DefaultBeerStore.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Services/DefaultBeerStore.swift -------------------------------------------------------------------------------- /Shared/Global/StyleConstants.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/StyleConstants.swift -------------------------------------------------------------------------------- /Shared/Global/Views/BeerView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/Shared/Global/Views/BeerView.swift -------------------------------------------------------------------------------- /screenshots/mac1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/screenshots/mac1.png -------------------------------------------------------------------------------- /screenshots/mac2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/screenshots/mac2.png -------------------------------------------------------------------------------- /screenshots/phone1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/screenshots/phone1.png -------------------------------------------------------------------------------- /screenshots/phone2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chris-swift-dev/Beers/HEAD/screenshots/phone2.png --------------------------------------------------------------------------------