The template for SwiftPM-based highly modularized (iOS) applications

Overview

basic-ios-template

SwiftPM 5.6 @maximkrouk

Getting started

  1. Fork the repo as a template.

  2. Create a local folder for your app and navigate to it

mkdir <YourAppName>
cd <YourAppName>
  1. 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 😌

  1. 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>
  1. 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

Structure

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 resources and generated boilerplate
}

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 🚀

Recommended dependencies

Will be recommended later (yet in alpha or beta)

You might also like...
SwiftUITemplate - Template repository for SwiftUI projects

SwiftUITemplate Template repository for SwiftUI projects. Environment Name Versi

LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.
LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.

LinkedLog Xcode Plugin LinkedLog is a Xcode plugin that includes a Xcode PCH file template that adds the macros LLog and LLogF. The LLog macro will wo

Template repository for quickly creating boilerplate code for a SwiftUI macOS app.
Template repository for quickly creating boilerplate code for a SwiftUI macOS app.

Sidebar App This is a template repository for quickly creating boilerplate code for a SwiftUI macOS app. License This app is released into the public

This is a template repository for quickly creating boilerplate code for a SwiftUI macOS menu bar app.
This is a template repository for quickly creating boilerplate code for a SwiftUI macOS menu bar app.

Menu Bar App This is a template repository for quickly creating boilerplate code for a SwiftUI macOS menu bar app. License This app is released into t

A nano-sized weather station based on a Raspberry Pi with an API, iOS & Mac Catalyst app, and sensor-based automations.
A nano-sized weather station based on a Raspberry Pi with an API, iOS & Mac Catalyst app, and sensor-based automations.

Nanotool A nano-sized weather station based on a Raspberry Pi with an API, iOS & Mac Catalyst app, and sensor-based automations. Descriere Vremea este

Fridax enables you to read variables and intercept/hook functions in Xamarin/Mono JIT and AOT compiled iOS/Android applications.

Fridax is a Node package for dealing with Xamarin applications while using the Frida API. Goal • Installation • Usage • Examples • Issues • License Bu

A tool to read the binarycookie format of Cookies on iOS applications

BinaryCookieReader Cloned from http://securitylearn.net/wp-content/uploads/tools/iOS/BinaryCookieReader.py ##Usage Python BinaryCookieReader.py [Cooki

A Swift package that provides convenient Lorem Ipsum text, images, colors and other placeholders for rapidly prototyping, building and testing your iOS applications.
A Swift package that provides convenient Lorem Ipsum text, images, colors and other placeholders for rapidly prototyping, building and testing your iOS applications.

Lorem Introducing Lorem, a placeholder generator library for iOS to help you rapidly prototype, build and test your iOS applications. By leveraging Sw

A simple, reliable and scalable delivery API for transactional push notifications for websites and applications
A simple, reliable and scalable delivery API for transactional push notifications for websites and applications

Catapush is a simple, reliable and scalable delivery API for transactional push notifications for websites and applications. Ideal for sending data-dr

Comments
  • CocoaPods support

    CocoaPods support

    We declare that CocoaPods in general deprecated for modern iOS apps. Anyway you may have to use them, so the example will be provided in a separate branch

    enhancement 
    opened by maximkrouk 0
  • Tools installation options

    Tools installation options

    Add installation options

    • global (install the tool to usr/local/bin, create an alias in local folder)
    • shared (install the tool to~/.local-cli-tools, create an alias in local folder)
    • local (install the tool to $SRCROOT/scripts/bin)

    Implement ARC-behavior for aliasing (so you can keep tools while some project on your device is using it, but you'll be able to easily remove unused tools, related to the project via running make remove_cli_tools)

    enhancement 
    opened by maximkrouk 0
Owner
capturecontext
Swift enthusiasts
capturecontext
XCode Preview template for UIkit based project.

SwiftPreview XCode Preview template for UIkit based project. Support custom file template class inherit from UIView and UIViewController. How to use?

Won Heo 10 Mar 31, 2022
UIKit-based app project template for Swift Playgrounds 4

playgrounds-uikit-app This is a simplistic sample template for Swift Playgrounds 4 to begin with a UIKit-based app delegate & window scene instead of

Steven Troughton-Smith 39 Sep 19, 2022
Xamoom tourism template iOS

xamoom-tourism-template-iOS Pods Install pods via command pod install Buid system Open File -> Workpace settings Select Legacy Build System Check Do n

xamoom GmbH 0 Nov 15, 2021
A template Vapor app with nginx frontend.

This is an example Vapor app. It contains the app itself, as well as surrounding components (Postgres database, nginx frontend for providing secure connection), all runnable out of the box with docker compose. It is a good starting point for Vapor development of an API server which you could access from macOS and iOS clients.

Jaanus Kase 5 Jul 1, 2022
Static Native Template and Dynamic Styling without any other app release

FileManager Project Students and Freshers, Good opportunity for you to learn and contribute in this project. Here you would learn how you can change t

Naveen Chauhan 3 Nov 30, 2021
The template for Delta Client plugins.

Delta Plugin Template This repository is a template for Delta Client plugins. To create a plugin, create a repo from this template repo and then repla

null 1 Jan 12, 2022
React Native Template for Taro

React Native Template for Taro requirement taro: @tarojs/cli@^3.2.0 framework: 'react' quick start install react native library install peerDependenci

null 1 Nov 20, 2021
A template to solve Advent of Code problems using Swift

Advent Of Code Swift Template This repository serves as a template for an Xcode project set up to solve the Advent of Code problems in Swift. No attem

Christopher Luu 5 Dec 7, 2022
A zero-code template app that demonstrates how to use TheraForge's APIs and can be used for fast prototyping

TheraForge MagicBox 1.0.0-beta The Open TheraForge (OTF) MagicBox app is a template for creating digital health solutions that help people better mana

TheraForge 0 Dec 23, 2021
Use this template as a starting point for any Swift 5 module that you want other people to include in their projects

Swift 5 Module Template Use this template as a starting point for any Swift 5 mo

James Knipe 0 Dec 28, 2021