{"id":22828420,"url":"https://github.com/nativeapptemplate/nativeapptemplate-free-ios","last_synced_at":"2026-03-07T13:02:27.310Z","repository":{"id":267064834,"uuid":"899792572","full_name":"nativeapptemplate/NativeAppTemplate-Free-iOS","owner":"nativeapptemplate","description":"Modern, full-featured, production-ready native iOS app with user authentication and background tag reading.","archived":false,"fork":false,"pushed_at":"2025-03-25T11:21:00.000Z","size":35185,"stargazers_count":60,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T12:26:50.720Z","etag":null,"topics":["authentication","ios","nfc","qrcode","rest-api","saas","saas-boilerplate","swift","swiftui"],"latest_commit_sha":null,"homepage":"https://nativeapptemplate.com","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nativeapptemplate.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-07T03:16:33.000Z","updated_at":"2025-03-25T11:21:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"9a170c31-eded-4ca2-afc7-164f3630d389","html_url":"https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS","commit_stats":null,"previous_names":["nativeapptemplate/nativeapptemplate-free-ios"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nativeapptemplate%2FNativeAppTemplate-Free-iOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nativeapptemplate%2FNativeAppTemplate-Free-iOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nativeapptemplate%2FNativeAppTemplate-Free-iOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nativeapptemplate%2FNativeAppTemplate-Free-iOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nativeapptemplate","download_url":"https://codeload.github.com/nativeapptemplate/NativeAppTemplate-Free-iOS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250468272,"owners_count":21435451,"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":["authentication","ios","nfc","qrcode","rest-api","saas","saas-boilerplate","swift","swiftui"],"created_at":"2024-12-12T19:09:33.853Z","updated_at":"2026-03-07T13:02:27.270Z","avatar_url":"https://github.com/nativeapptemplate.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NativeAppTemplate-Free-iOS\n\nNativeAppTemplate-Free-iOS is a modern, comprehensive, and production-ready native iOS app with user authentication and [background tag reading](https://developer.apple.com/documentation/corenfc/adding-support-for-background-tag-reading).  \nThis iOS app is a free version of  [NativeAppTemplate-iOS (Solo)](https://nativeapptemplate.com/products/ios-solo) and [NativeAppTemplate-iOS (Team)](https://nativeapptemplate.com/products/ios-team).  \n\nThe Android version is available here: [NativeAppTemplate-Free-Android](https://github.com/nativeapptemplate/NativeAppTemplate-Free-Android).  \n\n## Overview\n\nNativeAppTemplate-Free-iOS is configured to connect to `api.nativeapptemplate.com`.  \nYou can purchase the source code for the backend server APIs, made with Ruby on Rails, that power `api.nativeapptemplate.com`:\n\n- [NativeAppTemplate-API (Solo)](https://nativeapptemplate.com/products/api-solo)  \n- [NativeAppTemplate-API (Team)](https://nativeapptemplate.com/products/api-team)\n\n### Screenshots\n\n![Screenshot showing Sign in screen, Shops screen and Settings screen](https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS/blob/main/docs/images/screenshots.png \"Screenshot showing Sign in screen, Shops screen and Settings screen\")\n\n### Features\n\nNativeAppTemplate-Free-iOS uses modern iOS development tools and practices, including:\n\n- **100% Swift**\n- **99% SwiftUI** (UIKit is only used for the contact email screen.)\n- **[@Observable](https://developer.apple.com/documentation/swiftui/migrating-from-the-observable-object-protocol-to-the-observable-macro)** (iOS 17: streamlined Swift state management)\n- **[SwiftLint](https://github.com/realm/SwiftLint)**\n- **[Simple MVVM Layered Architecture](https://medium.com/@dadachix/key-differences-in-mvvm-architecture-ios-vs-android-e239d30b2ea7)**\n- **Test** (Swift Testing)\n- Inspired by [emitron-iOS](https://github.com/razeware/emitron-iOS)\n\n#### Included Features\n\n- Onboarding\n- Sign Up / Sign In / Sign Out\n- Email Confirmation\n- Forgot Password\n- Input Validation\n- CRUD Operations for Shops (Create/Read/Update/Delete)\n- CRUD Operations for Shops’ Nested Resource, Number Tags (ItemTags) (Create/Read/Update/Delete)\n- Generate QR Code Image for Number Tags (ItemTags) with a Centered Number\n- NFC features for Number Tags (ItemTags): Write Application Info to a Tag, Read a Tag, Background Tag Reading\n- And more!\n\n## NFC Tag Operations\n\n### Overview  \n\n![Screenshot showing Overview before](https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS/blob/main/docs/images/overview_before.png \"Screenshot showing Overview before\")\n\n![Screenshot showing Overview after](https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS/blob/main/docs/images/overview_after.png \"Screenshot showing Overview after\")\n\nThe app replaces traditional paper tags with NFC tags to efficiently manage walk-in customer waitlists. It writes application-specific information onto your NFC cards (referred to as :red_circle: **Server Tag** and :large_blue_circle: **Customer Tag**).\n\n**For Customers:**  \nWhen a customer scans a :large_blue_circle: **Customer Tag**, they can view the :green_circle: **Number Tags Webpage** (a public webpage) on their mobile browser. This page displays completed Number Tags.\n\n**For Staff:**  \nBy scanning a :red_circle: **Server Tag** paired with the :large_blue_circle: **Customer Tag**, staff can complete a Number Tag. Completed Number Tags automatically appear on the :green_circle: **Number Tags Webpage** for customer reference.\n\n### How It Works  \n\n![Screenshot showing Write Application Info to Tag screen, Scan Tag screen, and Shop Detail screen](https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS/blob/main/docs/images/screenshots_nfc.png \"Screenshot showing Write Application Info to Tag screen, Scan Tag screen, and Shop Detail screen\")\n\n1. Write application info to pair **Number Tags** (Server Tag and Customer Tag) or a **Customer QR code**:  \n   - Go to: **Shops \u003e [Shop] \u003e Shop Settings \u003e Manage Number Tags \u003e [Number Tag]**.  \n2. Scan a **Server Tag** in the **Scan** tab.  \n3. View the updated **Number Tags** status in the **Shop Detail** screen or on the **Number Tags Webpage** (see Background Tag Reading GIF below).  \n\n### Recommended NFC Tags  \nFor best performance, use **NTAG215 (540 bytes)** tags.  \nExample: [50pcs NFC Cards Ntag215](https://www.amazon.com/dp/B087FRYY8S) (Amazon USA).  \n\n---\n\n## Background Tag Reading  \n\n![Gif showing Background Tag Reading](https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS/blob/main/docs/images/nfc.gif \"Showing Background Tag Reading\")  \n\n### How It Works  \n1. Scan a **Server Tag**.  \n2. View the updated **Number Tags** status in the **Shop Detail** screen or on the **Number Tags Webpage**.  \n\nThe **Number Tags Webpage** updates in real-time using Rails [Turbo](https://turbo.hotwired.dev).  \nThis functionality is available in:  \n- [NativeAppTemplate-API (Solo)](https://nativeapptemplate.com/products/api-solo)  \n- [NativeAppTemplate-API (Team)](https://nativeapptemplate.com/products/api-team)  \n\n\u003e **Note:**  \n\u003e The GIF above shows [MyTurnTag Creator for iOS](https://apps.apple.com/app/myturntag-creator/id1516198303) in action, which may behave slightly differently from **NativeAppTemplate-Free-iOS**.\n\n#### Associated Domains Requirement (iOS)  \nFor background tag reading to work correctly on **iOS**, you must configure **Associated Domains** in your app.  \n\nTo set up Associated Domains on iOS, follow these steps:  \n1. Add your domain (e.g., `applinks:api.example.com`) to the **Associated Domains** section in Xcode under **Signing \u0026 Capabilities**.  \n2. Configure the **apple-app-site-association (AASA)** file and host it on your server.\n3. Verify that the **AASA** file is correctly configured and accessible by checking its contents at the following URL:  \n\n   🔗 [https://app-site-association.cdn-apple.com/a/v1/api.example.com](https://app-site-association.cdn-apple.com/a/v1/api.example.com)  \n\n4. Uninstall **NativeAppTemplate-Free-iOS**, reset your device, and then reinstall **NativeAppTemplate-Free-iOS** to ensure the changes take effect.\n\nFor detailed instructions, refer to Apple’s official documentations:  \n- [Adding Support for Background Tag Reading](https://developer.apple.com/documentation/corenfc/adding-support-for-background-tag-reading)  \n- [Supporting Associated Domains](https://developer.apple.com/documentation/xcode/supporting-associated-domains)  \n\n## Not Included in the Free Version\n\n![Gif showing Switching organization](https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS/blob/main/docs/images/organization.gif \"Showing Switching organization\")  \n\nThe full versions ([NativeAppTemplate-iOS (Solo)](https://nativeapptemplate.com/products/ios-solo) and [NativeAppTemplate-iOS (Team)](https://nativeapptemplate.com/products/ios-team)) include additional advanced features:\n\n- URL Path-Based Multitenancy (prepends `/:account_id/` to URLs)\n- User Invitation to Organizations\n- Role-Based Permissions and Access Control\n\n## Supported Devices\n\n- **iPhone**  \n  - SDK: iOS  \n  - Orientation: Portrait mode only  \n  - Screen: Requires full screen  \n\n- **iPad**  \n  - SDK: iOS  \n  - Orientation: Portrait mode only  \n  - Screen: Requires full screen  \n\n- **Mac**  \n  - SDK: iOS  \n  - Orientation: Portrait mode only  \n  - Screen: Requires full screen  \n  - Notes: Designed for iPad  \n\n## Getting Started\n\nTo get started, clone this repository:\n\n```bash\ngit clone https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS.git\n```\n\n## Requirements\n\nTo run this app successfully, ensure you have:\n\n- An iOS device or emulator with iOS version 17.6 or higher\n\n## Running with the NativeAppTemplate-API on localhost\n\nTo connect to a local API server, update the following configuration in in Constants.swift:\n\n```swift\nstatic let scheme: String = \"http\"\nstatic let domain: String = \"192.168.1.21\"\nstatic let port: String = \"3000\"\n```\n\n## SwiftLint\n\nSwiftLint 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.\n\nTo install SwiftLint using homebrew:\n\n```bash\n$ brew install swiftlint\n```\n\nXcode will automatically run SwiftLint if it is installed.\n\n## Blogs\n\n- [Key Differences in MVVM Architecture: iOS vs. Android](https://medium.com/@dadachix/key-differences-in-mvvm-architecture-ios-vs-android-e239d30b2ea7)\n- [Cross-Platform Background NFC Tag Reading](https://medium.com/@dadachix/cross-platform-background-nfc-tag-reading-8a704f0cb6e9)\n\n## Contributing\n\nIf you have an improvement you'd like to share, create a fork of the repository and send us a pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnativeapptemplate%2Fnativeapptemplate-free-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnativeapptemplate%2Fnativeapptemplate-free-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnativeapptemplate%2Fnativeapptemplate-free-ios/lists"}