-
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
Appand navigate to it
git clone https://github.com/<your-profile>/<your-app-name>-ios.git
mv <your-app-name>-ios App
cd AppYou 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 and Previews/.preview.yml contents accordingly to your needs
- bundleIdPrefix:
org-domain.org-hostto your bundleID prefix - targets:
template-app-universalto<your-app-name>-universal - info.properties.CFBundleDisplayName:
TemplateAppto<YourAppName> - see xcodegen for more configuration info
- Bootstrap the environment
make bootstrapSee Makefile for details
Than you can commit changes and you are ready for the actual development π
open Package.xcworkspaceSee Extensions and Dependencies for more details for these modules
Main work is happenning in the root package.
<#Module#>Featurenaming 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/capturecontext/swift-declarative-configuration
-
https://github.com/pointfreeco/swift-composable-architecture
Will be recommended later (yet in alpha or beta)