NativeAppTemplate-Free-iOS is a modern, comprehensive, and production-ready native iOS app with user authentication.
This iOS app is a free version of NativeAppTemplate-iOS (Solo) and NativeAppTemplate-iOS (Team).
The Android version is available here: NativeAppTemplate-Free-Android.
NativeAppTemplate-Free-iOS is configured to connect to api.nativeapptemplate.com
.
You can purchase the source code for the backend server APIs, made with Ruby on Rails, that power api.nativeapptemplate.com
:
NativeAppTemplate-Free-iOS uses modern iOS development tools and practices, including:
- 100% Swift
- 99% SwiftUI (UIKit is only used for the contact email screen.)
- @Observable (iOS 17: streamlined Swift state management)
- SwiftLint
- Inspired by emitron-iOS
- Onboarding
- Sign Up / Sign In / Sign Out
- Email Confirmation
- Forgot Password
- Input Validation
- CRUD Operations for Shops (Create/Read/Update/Delete)
- And more!
The full versions (NativeAppTemplate-iOS (Solo) and NativeAppTemplate-iOS (Team)) include additional advanced features:
- URL Path-Based Multitenancy (e.g., prepends
/:account_id/
to URLs) - User Invitation to Organizations
- Role-Based Permissions and Access Control
-
iPhone
- SDK: iOS
- Orientation: Portrait mode only
- Screen: Requires full screen
-
iPad
- SDK: iOS
- Orientation: Portrait mode only
- Screen: Requires full screen
-
Mac
- SDK: iOS
- Orientation: Portrait mode only
- Screen: Requires full screen
- Notes: Designed for iPad
To get started, clone this repository:
git clone https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS.git
To run this app successfully, ensure you have:
- An iOS device or emulator with iOS version 17.6 or higher
To connect to a local API server, update the following configuration in in Constants.swift:
static let scheme: String = "http"
static let domain: String = "192.168.1.21"
static let port: String = "3000"
SwiftLint runs as part of the build process in Xcode, and errors/warnings are surfaced in Xcode as well. Please ensure that you run SwiftLint before submitting a pull request.
To install SwiftLint using homebrew:
$ brew install swiftlint
Xcode will automatically run SwiftLint if it is installed.
If you have an improvement you'd like to share, create a fork of the repository and send us a pull request.