https://github.com/nativeapptemplate/nativeapptemplate-free-android
Modern, full-featured, production-ready native Android app with user authentication and background tag reading.
https://github.com/nativeapptemplate/nativeapptemplate-free-android
android authentication jetpack-compose kotlin nfc qrcode rest-api saas saas-boilerplate
Last synced: 24 days ago
JSON representation
Modern, full-featured, production-ready native Android app with user authentication and background tag reading.
- Host: GitHub
- URL: https://github.com/nativeapptemplate/nativeapptemplate-free-android
- Owner: nativeapptemplate
- License: mit
- Created: 2024-12-07T03:29:27.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-03-15T10:23:15.000Z (about 2 months ago)
- Last Synced: 2025-03-25T11:11:35.546Z (about 1 month ago)
- Topics: android, authentication, jetpack-compose, kotlin, nfc, qrcode, rest-api, saas, saas-boilerplate
- Language: Kotlin
- Homepage: https://nativeapptemplate.com
- Size: 22.6 MB
- Stars: 10
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# NativeAppTemplate-Free-Android
NativeAppTemplate-Free-Android is a modern, comprehensive, and production-ready native Android app with user authentication and [background tag reading](https://developer.apple.com/documentation/corenfc/adding-support-for-background-tag-reading).
This Android app is a free version of [NativeAppTemplate-Android (Solo)](https://nativeapptemplate.com/products/android-solo) and [NativeAppTemplate-Android (Team)](https://nativeapptemplate.com/products/android-team).The iOS version is available here: [NativeAppTemplate-Free-iOS](https://github.com/nativeapptemplate/NativeAppTemplate-Free-iOS).
## Overview
NativeAppTemplate-Free-Android 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-API (Solo)](https://nativeapptemplate.com/products/api-solo)
- [NativeAppTemplate-API (Team)](https://nativeapptemplate.com/products/api-team)### Screenshots

### Features
NativeAppTemplate-Free-Android uses modern Android development tools and practices, including:
- **100% Kotlin**
- **100% Jetpack Compose**
- **Hilt** (Dependency Injection)
- **Retrofit2** (Networking)
- **[Proto DataStore](https://developer.android.com/topic/libraries/architecture/datastore)**
- **[Android Modern App Architecture](https://developer.android.com/topic/architecture#modern-app-architecture)**
- **[Simple MVVM Layered Architecture](https://medium.com/@dadachix/key-differences-in-mvvm-architecture-ios-vs-android-e239d30b2ea7)**
- **Test**
- Inspired by [nowinandroid](https://github.com/android/nowinandroid) and [emitron-Android](https://github.com/razeware/emitron-Android)#### Included Features
- Onboarding
- Sign Up / Sign In / Sign Out
- Email Confirmation
- Forgot Password
- Input Validation
- CRUD Operations for Shops (Create/Read/Update/Delete)
- CRUD Operations for Shops’ Nested Resource, Number Tags (ItemTags) (Create/Read/Update/Delete)
- Generate QR Code Image for Number Tags (ItemTags) with a Centered Number
- NFC features for Number Tags (ItemTags): Write Application Info to a Tag, Read a Tag, Background Tag Reading
- And more!## NFC Tag Operations
### Overview


The 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**).
**For Customers:**
When 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.**For Staff:**
By 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.### How It Works

1. Write application info to pair **Number Tags** (Server Tag and Customer Tag) or a **Customer QR code**:
- Go to: **Shops > [Shop] > Shop Settings > Manage Number Tags > [Number Tag]**.
2. Scan a **Server Tag** in the **Scan** tab.
3. View the updated **Number Tags** status in the **Shop Detail** screen or on the **Number Tags Webpage** (see Background Tag Reading GIF below).### Recommended NFC Tags
For best performance, use **NTAG215 (540 bytes)** tags.
Example: [50pcs NFC Cards Ntag215](https://www.amazon.com/dp/B087FRYY8S) (Amazon USA).---
### Background Tag Reading

1. Scan a Server Tag.
2. View the updated Number Tags status in the **Shop Detail** screen or on the **Number Tags Webpage**.The **Number Tags Webpage** updates in real-time using Rails [Turbo](https://turbo.hotwired.dev).
This functionality is available in:
- [NativeAppTemplate-API (Solo)](https://nativeapptemplate.com/products/api-solo)
- [NativeAppTemplate-API (Team)](https://nativeapptemplate.com/products/api-team)> **Note:**
> 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-Android**.## Not Included in the Free Version

The full versions ([NativeAppTemplate-Android (Solo)](https://nativeapptemplate.com/products/android-solo) and [NativeAppTemplate-Android (Team)](https://nativeapptemplate.com/products/android-team)) include additional advanced features:
- URL Path-Based Multitenancy (prepends `/:account_id/` to URLs)
- User Invitation to Organizations
- Role-Based Permissions and Access Control## Getting Started
To get started, clone this repository:
```bash
git clone https://github.com/nativeapptemplate/NativeAppTemplate-Free-Android.git
```## Requirements
To run this app successfully, ensure you have:
- An Android device or emulator with API level 26 or higher.
## Running with the NativeAppTemplate-API on localhost
To connect to a local API server, update the following configuration in the build.gradle.kts (Module: app):
```kotlin
buildConfigField("String", "DOMAIN","\"192.168.1.21\"")
buildConfigField("String", "PORT","\"3000\"")
buildConfigField("String", "SCHEME","\"http\"")
```## Blog
- [Key Differences in MVVM Architecture: iOS vs. Android](https://medium.com/@dadachix/key-differences-in-mvvm-architecture-ios-vs-android-e239d30b2ea7)
- [Cross-Platform Background NFC Tag Reading](https://medium.com/@dadachix/cross-platform-background-nfc-tag-reading-8a704f0cb6e9)## Contributing
If you have an improvement you'd like to share, create a fork of the repository and send us a pull request.