-
Fork the repo as a template.
-
Create a local folder for your app and navigate to it
mkdir <YourAppName>
cd <YourAppName>
- Clone the template, rename cloned folder to
App
and navigate to it
git clone https://github.com/<your-profile>/<your-app-name>-ios.git
mv <your-app-name>-ios App
cd App
You can choose any name or avoid nesting, but we recommend to follow the example (including the case) to get the best result 😌
- Rename project.yml, .config/project.yml and .config/preview.yml contents accordingly to your needs
- bundleIdPrefix:
org-domain.org-host
to your bundleID prefix - targets:
MyTarget
to<your-app-name>-ios
- info.properties.CFBundleDisplayName:
MyApp
to<YourAppName>
- Bootstrap the environment
make bootstrap
See Makefile for details
Than you can commit changes and you are ready for the actual development 😎
open Package.xcworkspace
See Extensions and Dependencies for more details for these modules
Main work is happenning in the root package.
<#Module#>Feature
naming is used for modules user directly interact with<#Service#>
naming modules is used for modules that are used by developers to build feature modules
Basically your Sources
folder structure will look kinda like this
Sources { // Main modules
AppFeature // Entry point for the app, contains AppDelegate, RootViewController, AppState etc., coordinates app flows
MainFeature // Main app flow, non-main flows may be Onboarding/Admin/Auth for example.
<#SomeFeature#>Feature // Any other feature
AppUI // App-specific UI components
APIClient // Service module example
Resources // Contains shared resources and generated boilerplate, but you can declare target-specific resources too, see https://github.com/capturecontext/spmgen
}
Note:
Scripts can be improved later so we advice you to keep an eye on the repo and a tracking reference to our
main
branch to keep your infrastructure up to date 🚀
- https://github.com/pointfreeco/swift-composable-architecture
- https://github.com/pointfreeco/swift-identified-collections
- https://github.com/pointfreeco/swift-parsing
- https://github.com/capturecontext/swift-declarative-configuration
- https://github.com/capturecontext/swift-composable-environment
- https://github.com/capturecontext/swift-standard-clients
- https://github.com/capturecontext/swift-capture
- https://github.com/capturecontext/spmgen
- https://github.com/snapkit/snapkit
Will be recommended later (yet in alpha or beta)
- https://github.com/capturecontext/composable-architecture-extensions
- https://github.com/capturecontext/swift-foundation-extensions
- https://github.com/capturecontext/swift-cocoa-extensions
- https://github.com/capturecontext/combine-extensions
- https://github.com/capturecontext/combine-cocoa
- https://github.com/capturecontext/combine-cocoa-navigation
- https://github.com/capturecontext/swift-prelude
- https://github.com/capturecontext/swift-generic-color
- https://github.com/capturecontext/swift-palette