{"id":21064634,"url":"https://github.com/capturecontext/basic-ios-template","last_synced_at":"2025-05-16T02:32:45.063Z","repository":{"id":37273540,"uuid":"498518338","full_name":"CaptureContext/basic-ios-template","owner":"CaptureContext","description":"The template for SwiftPM-based highly modularized (iOS) applications","archived":false,"fork":false,"pushed_at":"2022-09-14T16:34:41.000Z","size":502,"stargazers_count":40,"open_issues_count":7,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-05-08T11:52:09.094Z","etag":null,"topics":["automation","best-practices","ios","modular","modularization","swift","swift-package-manager","swiftpm","template","xcodegen"],"latest_commit_sha":null,"homepage":"https://capturecontext.dev","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CaptureContext.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-31T22:38:14.000Z","updated_at":"2025-03-09T20:55:36.000Z","dependencies_parsed_at":"2023-01-17T14:15:54.810Z","dependency_job_id":null,"html_url":"https://github.com/CaptureContext/basic-ios-template","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaptureContext%2Fbasic-ios-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaptureContext%2Fbasic-ios-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaptureContext%2Fbasic-ios-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaptureContext%2Fbasic-ios-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CaptureContext","download_url":"https://codeload.github.com/CaptureContext/basic-ios-template/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254456170,"owners_count":22074122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","best-practices","ios","modular","modularization","swift","swift-package-manager","swiftpm","template","xcodegen"],"created_at":"2024-11-19T17:50:33.684Z","updated_at":"2025-05-16T02:32:43.912Z","avatar_url":"https://github.com/CaptureContext.png","language":"Swift","readme":"# basic-ios-template\n\n [![SwiftPM 5.6](https://img.shields.io/badge/swiftpm-5.6-ED523F.svg?style=flat)](https://swift.org/download/) [![@maximkrouk](https://img.shields.io/badge/contact-@capture__context-1DA1F2.svg?style=flat\u0026logo=twitter)](https://twitter.com/capture_context)\n\n### Getting started\n\n1. Fork the repo as a template.\n\n2. Create a local folder for your app and navigate to it\n\n```bash\nmkdir \u003cYourAppName\u003e\ncd \u003cYourAppName\u003e\n```\n\n2. Clone the template, rename cloned folder to `App` and navigate to it\n\n```bash\ngit clone https://github.com/\u003cyour-profile\u003e/\u003cyour-app-name\u003e-ios.git\nmv \u003cyour-app-name\u003e-ios App\ncd App\n```\n\n\u003e You can choose any name or avoid nesting, but we recommend to follow the example (including the case) to get the best result 😌\n\n3. Rename [project.yml](project.yml), [.config/project.yml](.config/project.yml) and [.config/preview.yml](.config/preview.yml) contents accordingly to your needs\n\n- bundleIdPrefix: `org-domain.org-host` to your bundleID prefix\n- targets: `MyTarget` to `\u003cyour-app-name\u003e-ios` \n- info.properties.CFBundleDisplayName: `MyApp` to `\u003cYourAppName\u003e`\n\n4. Bootstrap the environment\n\n```bash\nmake bootstrap\n```\n\n\u003e See Makefile for details\n\nThan you can commit changes and you are ready for the actual development 😎\n\n```bash\nopen Package.xcworkspace\n```\n\n\n### Structure\n\nSee [Extensions](Extensions/README.md) and [Dependencies](Dependencies/README.md) for more details for these modules\n\nMain work is happenning in the root package.\n\n- `\u003c#Module#\u003eFeature` naming is used for modules user directly interact with\n- `\u003c#Service#\u003e` naming modules is used for modules that are used by developers to build feature modules\n\nBasically your `Sources` folder structure will look kinda like this\n\n```swift\nSources { // Main modules\n  AppFeature // Entry point for the app, contains AppDelegate, RootViewController, AppState etc., coordinates app flows\n  MainFeature // Main app flow, non-main flows may be Onboarding/Admin/Auth for example.\n  \u003c#SomeFeature#\u003eFeature // Any other feature\n  AppUI // App-specific UI components\n  APIClient // Service module example\n  Resources // Contains shared resources and generated boilerplate, but you can declare target-specific resources too, see https://github.com/capturecontext/spmgen\n}\n```\n\n\n\n\u003e **Note:**\n\u003e\n\u003e _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_ 🚀\n\n\n\n### Recommended dependencies\n\n- https://github.com/pointfreeco/swift-composable-architecture\n- https://github.com/pointfreeco/swift-identified-collections\n- https://github.com/pointfreeco/swift-parsing\n- https://github.com/capturecontext/swift-declarative-configuration\n- https://github.com/capturecontext/swift-composable-environment\n- https://github.com/capturecontext/swift-standard-clients\n- https://github.com/capturecontext/swift-capture\n- https://github.com/capturecontext/spmgen\n- https://github.com/snapkit/snapkit\n\n\u003e Will be recommended later (yet in alpha or beta)\n\u003e - https://github.com/capturecontext/composable-architecture-extensions\n\u003e - https://github.com/capturecontext/swift-foundation-extensions\n\u003e - https://github.com/capturecontext/swift-cocoa-extensions\n\u003e - https://github.com/capturecontext/combine-extensions\n\u003e - https://github.com/capturecontext/combine-cocoa\n\u003e - https://github.com/capturecontext/combine-cocoa-navigation\n\u003e - https://github.com/capturecontext/swift-prelude\n\u003e - https://github.com/capturecontext/swift-generic-color\n\u003e - https://github.com/capturecontext/swift-palette\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcapturecontext%2Fbasic-ios-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcapturecontext%2Fbasic-ios-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcapturecontext%2Fbasic-ios-template/lists"}