devsnack
Documentation

DocuMind AI documentation

Run it, point it at your own accounts, ship it under your own brand. Written against version 1.2.0 of the download you get on CodeCanyon.

$19 on CodeCanyon
  • Version v1.2.0
  • Updated Apr 2026
  • Platform Flutter
  • Stack Flutter · OCR
On this page
01

Introduction

DocuMind AI is a premium Flutter application that lets users upload documents (PDF, TXT), scan physical pages via OCR, and then ask AI-powered questions about the content. Built with Firebase, OpenAI GPT-4o, RevenueCat subscriptions, and Google AdMob monetization.

Target users

Students, lawyers, researchers, business professionals, teachers — anyone who reads long documents and needs quick, AI-driven answers.

Tech stack

Frontend
Flutter 3.41.2 (Dart SDK 3.11.0)
State management
Riverpod (hooks_riverpod + flutter_hooks)
Navigation
go_router
Auth
Firebase Auth (Email, Google, Apple Sign-In)
Database
Cloud Firestore
Storage
Firebase Storage
AI backend
OpenAI GPT-4o via Firebase Cloud Functions
OCR
Google ML Kit Text Recognition
PDF
Syncfusion Flutter PDF / PDF Viewer
Ads
Google AdMob (Banner + Interstitial)
Subscriptions
RevenueCat (purchases_flutter)
TTS / STT
flutter_tts + speech_to_text
02

Requirements and dependencies

System requirements

RequirementMinimumRecommended
Flutter SDK
3.41.2+
Latest stable
Dart SDK
3.11.0+
Bundled with Flutter
Android Studio
Hedgehog+
Latest
Xcode (macOS)
15.0+
Latest
Android minSdkVersion
21
23+
iOS Deployment Target
13.0
15.0+
Node.js (for Cloud Functions)
18.x
20.x

External accounts required

  • Firebase project — Auth, Firestore, Storage, Cloud Functions
  • OpenAI API key — For GPT-4o document Q&A
  • RevenueCat account — In-app subscription management
  • Google AdMob account — Monetization via ads
  • Apple Developer account — For iOS builds & Apple Sign-In
  • Google Play Console — For Android distribution

Key dependencies

pubspec.yaml
dependencies:
  flutter_riverpod: ^3.2.1       # State management
  hooks_riverpod: ^3.2.1         # Hooks + Riverpod
  go_router: ^17.1.0             # Declarative routing
  firebase_core: ^4.4.0          # Firebase initialization
  firebase_auth: ^6.1.4          # Authentication
  cloud_firestore: ^6.1.2        # Database
  firebase_storage: ^13.0.6      # File uploads
  cloud_functions: ^6.0.6        # Cloud Functions calls
  google_sign_in: ^7.2.0         # Google OAuth
  sign_in_with_apple: ^7.0.1     # Apple OAuth
  file_picker: ^10.3.10          # Document picking
  image_picker: ^1.2.1           # Camera capture
  google_mlkit_text_recognition: ^0.15.1  # OCR
  syncfusion_flutter_pdfviewer: ^32.2.7   # PDF viewing
  syncfusion_flutter_pdf: ^32.2.7         # PDF parsing
  purchases_flutter: ^9.12.2     # RevenueCat
  google_mobile_ads: ^7.0.0      # AdMob
  flutter_tts: ^4.2.5            # Text-to-Speech
  speech_to_text: ^7.3.0         # Speech-to-Text
  flutter_markdown: ^0.7.7+1     # Markdown rendering
  share_plus: ^12.0.1            # Sharing
  url_launcher: ^6.3.2           # Open URLs
03

Installation

  1. 01

    Prerequisites — install Flutter

    Download and install Flutter SDK from the official site. Ensure it’s on your PATH.

    terminal
    # Verify installation
    flutter doctor -v
    
    # Expected output: all checkmarks ✓ for Flutter, Android, iOS
  2. 02

    Clone / extract the project

    Unzip the source code package or clone from your repository into a working directory.

    terminal
    # Extract the archive
    unzip documind_ai.zip -d ~/projects/documind_ai
    cd ~/projects/documind_ai
  3. 03

    Install Flutter dependencies

    terminal
    flutter pub get
  4. 04

    Set up Firebase

    Create a new Firebase project at console.firebase.google.com.

    terminal
    # Install Firebase CLI
    npm install -g firebase-tools
    
    # Login to Firebase
    firebase login
    
    # Install FlutterFire CLI
    dart pub global activate flutterfire_cli
    
    # Configure Firebase for your project
    flutterfire configure --project=YOUR_FIREBASE_PROJECT_ID
    Note
    This will generate firebase_options.dart, google-services.json (Android), and GoogleService-Info.plist (iOS) automatically.
  5. 05

    Enable Firebase services

    In the Firebase Console, enable the following:

    • Authentication → Enable Email/Password, Google, and Apple sign-in methods
    • Cloud Firestore → Create a database in production mode
    • Firebase Storage → Enable storage for document uploads
    • Cloud Functions → Upgrade to Blaze plan (pay-as-you-go) for function deployment
  6. 06

    Deploy Cloud Functions

    The Cloud Functions serve as middleware to securely call the OpenAI API.

    terminal
    cd functions
    
    # Install Node.js dependencies
    npm install
    
    # Create .env file with your OpenAI key
    echo "OPENAI_API_KEY=sk-your-openai-api-key-here" > .env
    
    # Deploy functions
    firebase deploy --only functions
    
    cd ..
    Warning
    Never commit your .env file or expose your OpenAI API key in client-side code. The Cloud Functions act as a secure proxy.
  7. 07

    Configure RevenueCat (subscriptions)

    See the detailed RevenueCat setup section below.
  8. 08

    Configure AdMob (ads)

    See the detailed AdMob setup section below.
  9. 09

    Run the app

    terminal
    # Run on Android emulator or device
    flutter run
    
    # Run on iOS simulator (macOS only)
    flutter run -d ios
    
    # Build release APK
    flutter build apk --release
    
    # Build iOS IPA
    flutter build ipa --release
04

Project structure

documind_ai/
documind_ai/
├── lib/
│   ├── main.dart                 App entry point
│   ├── app.dart                  Router, theme, navigation
│   ├── firebase_options.dart     Firebase config (auto-generated)
│   ├── core/
│   │   ├── constants/            App-wide constants
│   │   ├── providers/            Global providers (theme, prefs)
│   │   ├── services/             TTS, STT services
│   │   ├── widgets/              Main navigation scaffold
│   │   └── utils/                Helpers
│   └── features/
│       ├── ads/                  ad_provider.dart (AdMob IDs)
│       ├── auth/                 Login, Register, Onboarding
│       ├── chat/                 AI Q&A chat interface
│       ├── document/             Upload, Library, OCR, Viewer
│       ├── home/                 Home dashboard
│       ├── profile/              Profile & Settings
│       ├── quiz/                 AI Quiz Mode
│       └── subscription/         subscription_provider.dart (RevenueCat)
├── android/                      Android native config
├── ios/                          iOS native config
├── functions/                    Firebase Cloud Functions (Node.js)
└── pubspec.yaml                  Dependencies
05

Configuration

Theme and branding

The primary brand color is #00A6A6 (teal). The app uses Material 3 with Google Fonts (Figtree). Edit the theme in:

lib/app.dart
theme: ThemeData(
  colorScheme: ColorScheme.fromSeed(
    seedColor: const Color(0xFF00A6A6),  // ← Change brand color here
    brightness: Brightness.light,
  ),
  useMaterial3: true,
  textTheme: GoogleFonts.figtreeTextTheme(),  // ← Change font here
),

Environment variables

VariableLocationDescription
OPENAI_API_KEY
functions/.env
Your OpenAI API secret key
RevenueCat Apple key
lib/features/subscription/providers/subscription_provider.dart
Apple API key from RevenueCat
RevenueCat Google key
lib/features/subscription/providers/subscription_provider.dart
Google API key from RevenueCat
AdMob App ID (Android)
android/app/src/main/AndroidManifest.xml
AdMob Application ID
AdMob App ID (iOS)
ios/Runner/Info.plist
GADApplicationIdentifier
AdMob ad unit IDs
lib/features/ads/ad_provider.dart
Banner & Interstitial ad unit IDs
06

Features guide

Document management
Upload PDF and TXT files. Scan physical documents via camera OCR. Paste raw text manually. Manage a full document library.
AI-powered Q&A
Ask unlimited questions about uploaded documents. AI provides answers with paragraph-level citations. Supports follow-up questions with conversation memory.
Smart chat interface
Clean chat UI with document preview. Chat history saved per document. Copy, share, and bookmark answers. Voice input & text-to-speech support.
Camera OCR scanning
Scan physical documents using the device camera. Google ML Kit extracts text with high accuracy. Creates a digital document from the scan.
Quiz mode
AI generates quiz questions from document content. Multiple choice format. Track your score and review answers. Great for studying.
Document summary
One-tap document summarization. Key points extraction. Word count, reading time, and page statistics displayed automatically.
Authentication
Email/password registration, Google Sign-In, Apple Sign-In. Password recovery. Onboarding flow for new users. User profiles with usage stats.
Subscription and monetization
Free vs Pro plan via RevenueCat. Banner & interstitial AdMob ads for free users. Pro users enjoy ad-free experience with unlimited features.
Voice input and TTS
Speak your questions using speech-to-text. AI reads answers aloud via text-to-speech. Hands-free document interaction.
Export and share
Export full Q&A sessions. Share answers as text. Copy to clipboard. Share documents with others.
Dark / light theme
Toggle between dark and light mode. System-adaptive theme. Settings persist across app sessions via SharedPreferences.
PDF viewer
Integrated Syncfusion PDF viewer. Read documents directly in-app. Zoom, scroll, and navigate pages seamlessly.

Screen flow

#ScreenRouteDescription
1
Splash screen
/splash
Loading screen while checking auth state
2
Onboarding
/onboarding
3-step intro for first-time users
3
Login
/login
Email + Google + Apple sign-in
4
Register
/register
Create new account
5
Forgot password
/forgot-password
Email password reset
6
Home
/home
Dashboard with recent docs & quick upload
7
Library
/library
All uploaded documents
8
Document viewer
/library/viewer
PDF reader
9
AI chat
/library/chat
Document Q&A conversation
10
Quiz mode
/library/quiz
AI-generated quiz from document
11
Chat history
/library/chat-history
Previous conversations for a document
12
Camera OCR
/library/camera-ocr
Scan physical document
13
Paste text
/library/paste-text
Manual text input
14
Profile
/profile
User profile & stats
15
Settings
/profile/settings
Theme, language, cache, etc.
16
Paywall
/paywall
Subscription upgrade screen
07

RevenueCat setup

RevenueCat simplifies in-app purchases for both iOS (App Store) and Android (Google Play). It handles receipt validation, subscription status, and cross-platform entitlements.

  1. 01

    Create a RevenueCat account

    Go to app.revenuecat.com and sign up for a free account. Create a new Project.
  2. 02

    Configure App Store Connect (iOS)

    • In App Store Connect, go to Users and Access → Integrations → In-App Purchase
    • Generate a Shared Secret (App-Specific)
    • Create your subscription products (e.g., pro_monthly, pro_yearly)
    • In RevenueCat dashboard → Project Settings → Apple App Store:
    • Paste your App Bundle ID and Shared Secret
    • Upload your App Store Connect API Key (P8 file)
  3. 03

    Configure Google Play Console (Android)

    • In Google Play Console, go to Monetize → Subscriptions
    • Create subscription products matching iOS (e.g., pro_monthly, pro_yearly)
    • Create a Service Account with Financial Data permissions
    • Download the JSON key file
    • In RevenueCat dashboard → Project Settings → Google Play Store:
    • Upload the Service Account JSON key
    • Set the Package Name
  4. 04

    Create products and entitlements in RevenueCat

    • Go to Products → Add your App Store & Play Store product IDs
    • Go to Entitlements → Create an entitlement named pro
    • Attach your products to the pro entitlement
    • Go to Offerings → Create a “Default” offering with your packages
    Warning
    The entitlement name pro must match exactly — this is what the code checks: entitlements.all['pro']?.isActive
  5. 05

    Get your API keys

    In the RevenueCat dashboard, go to Project Settings → API Keys. Copy the:

    • Apple public API key (starts with appl_)
    • Google public API key (starts with goog_)
  6. 06

    Update the code with your keys

    Open lib/features/subscription/providers/subscription_provider.dart and replace the placeholder keys:

    subscription_provider.dart
    // Replace these with your actual RevenueCat publicly viewable API keys
    const _appleApiKey = 'appl_YOUR_REAL_APPLE_KEY_HERE';
    const _googleApiKey = 'goog_YOUR_REAL_GOOGLE_KEY_HERE';
  7. 07

    Disable mock mode

    In the same file, set _useMock to false so the app uses real RevenueCat API calls:

    subscription_provider.dart
    class SubscriptionNotifier {
      // Set this to false when you have real API keys
      final bool _useMock = false;  // ← Change from true to false
      ...
    }
    Tip
    When _useMock = true, the app simulates purchases for testing. Switch to false only when your RevenueCat products are fully configured.
  8. 08

    Test purchases

    • iOS: Use a Sandbox Tester account (App Store Connect → Users → Sandbox Testers)
    • Android: Add your Google account as a License Tester (Google Play Console → Settings → License Testing)
    • Use RevenueCat’s Debug Logs to verify purchases: Purchases.setLogLevel(LogLevel.debug)
08

AdMob setup

Note
The app currently uses Google test ad unit IDs. You must replace these with your real ad unit IDs before publishing.
  1. 01

    Create an AdMob account

    Go to admob.google.com and sign up. Create a new App for both Android and iOS.
  2. 02

    Create ad units

    For each platform (Android & iOS), create:

    Ad typeFormatWhere it’s used
    Banner ad
    Standard banner
    Bottom of Home, Library, Chat screens
    Interstitial ad
    Full-screen
    After uploading a document
  3. 03

    Update Android AdMob App ID

    Open android/app/src/main/AndroidManifest.xml and replace the test App ID:

    AndroidManifest.xml
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY" />
        <!-- Replace with YOUR AdMob Application ID -->
  4. 04

    Update iOS AdMob App ID

    Open ios/Runner/Info.plist and replace the test App ID:

    Info.plist
    <key>GADApplicationIdentifier</key>
    <string>ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY</string>
    <!-- Replace with YOUR AdMob Application ID -->
  5. 05

    Update ad unit IDs in code

    Open lib/features/ads/ad_provider.dart and replace all test IDs:

    ad_provider.dart
    class AdUnitIds {
      static String get bannerAdUnitId {
        if (Platform.isAndroid) {
          return 'ca-app-pub-XXXXX/YYYYY'; // YOUR Android banner ID
        } else {
          return 'ca-app-pub-XXXXX/YYYYY'; // YOUR iOS banner ID
        }
      }
    
      static String get interstitialAdUnitId {
        if (Platform.isAndroid) {
          return 'ca-app-pub-XXXXX/YYYYY'; // YOUR Android interstitial ID
        } else {
          return 'ca-app-pub-XXXXX/YYYYY'; // YOUR iOS interstitial ID
        }
      }
    }
    Warning
    Never use test ad IDs in production builds. Google will reject your app or suspend your AdMob account.
  6. 06

    Test with test ads first

    Google provides test ad IDs for development. These are the ones currently in the code. Only replace them when you are ready for production.

    Ad typeAndroid test IDiOS test ID
    Banner
    ca-app-pub-3940256099942544/6300978111
    ca-app-pub-3940256099942544/2934735716
    Interstitial
    ca-app-pub-3940256099942544/1033173712
    ca-app-pub-3940256099942544/4411468910
  7. 07

    Ad behavior

    • Pro users automatically skip all ads (checked via isPro flag in user profile)
    • Banner ads appear for free users on key screens via the BannerAdWidget
    • Interstitial ads are shown after user actions (e.g., document uploads) via InterstitialAdService.recordActionAndShowAdIfReady()
09

Customization

Changing the app name

PlatformFileField
Android
android/app/src/main/AndroidManifest.xml
android:label
iOS
ios/Runner/Info.plist
CFBundleDisplayName
In-app title
lib/app.dart
MaterialApp.router title:

Changing the brand color

Edit the seed color in lib/app.dart:

lib/app.dart
// Current: Teal (#00A6A6)
seedColor: const Color(0xFF00A6A6),
// Example: Deep Purple
seedColor: const Color(0xFF7C3AED),

Changing the font

Replace the Google Font in lib/app.dart:

lib/app.dart
// Current font
textTheme: GoogleFonts.figtreeTextTheme(),
// Alternatives
textTheme: GoogleFonts.interTextTheme(),
textTheme: GoogleFonts.poppinsTextTheme(),
textTheme: GoogleFonts.robotoTextTheme(),

Changing the app icon

  • Android: Replace files in android/app/src/main/res/mipmap-* directories
  • iOS: Replace the asset catalog at ios/Runner/Assets.xcassets/AppIcon.appiconset/
  • Alternatively, use the flutter_launcher_icons package for auto-generation

Changing ad frequency

In lib/features/ads/ad_provider.dart, modify the interstitial ad frequency:

ad_provider.dart
// Show interstitial every N actions (default: 1)
static const int _actionsBetweenAds = 3;  // Show every 3 uploads

Changing the AI model

Edit the Cloud Function in functions/index.js to switch OpenAI models:

functions/index.js
// Current: GPT-4o
model: "gpt-4o"
// Cheaper alternative
model: "gpt-4o-mini"
// Cheaper still
model: "gpt-3.5-turbo"
10

Admin panel (web)

DocuMind AI includes a built-in admin panel that runs as a Flutter Web app. When you run the project on web (flutter run -d chrome), it automatically loads the admin dashboard instead of the mobile app. The admin panel is deployed to Firebase Hosting at https://documind-ai-8f703.web.app.

Admin panel features

  • Dashboard — Overview of total users (Pro, Free, Guest), new signups (today/week/month), document stats (PDF, text, image counts + storage), questions asked today, chat sessions, flashcard decks, and Pro conversion rate.
  • User management — Paginated user list with search (email/name) and filter (All/Pro/Free/Guest). Click into any user to see their documents, chat sessions, flashcard decks, and folders. Admin actions: Grant/Revoke Pro, Reset daily questions, Delete user (cascading).
  • Document management — Cross-user document listing with type filter (All/PDF/Text/Image). Paginated with 10 items per page.
  • Content oversight — Browse all chat sessions across users with a message viewer dialog. Browse all flashcard decks with a card viewer dialog. Useful for monitoring AI response quality.
  • Subscriptions — Pro user list with conversion metrics. Manually grant or revoke Pro status.
  • Analytics — User growth, document breakdown (type distribution bar), feature usage stats, and user distribution visualization.
  • Settings — Configure daily question limit and max AI tokens per response (stored in Firestore config/app).

Setting up admin access

  1. 01
    Go to Firebase ConsoleFirestore users collection.
  2. 02
    Find your user document and add a field: isAdmin: true (boolean).
  3. 03
    Open the admin panel and sign in with that account’s email/password. Non-admin users are denied access.
11

Admin deployment and Cloud Functions

Deploying the admin panel

terminal
# Build the web release
flutter build web --release

# Deploy to Firebase Hosting
firebase deploy --only hosting

The hosting config in firebase.json points public to build/web with a SPA rewrite rule so all routes resolve to index.html.

Admin Cloud Functions

Five admin-specific Cloud Functions are included in functions/src/index.ts:

getAdminDashboardStats
Aggregated dashboard metrics.
adminToggleUserPro
Grant/revoke Pro with audit log.
adminResetUserQuestions
Reset daily question count.
deleteUserCascade
Full user deletion (data + storage + auth).
aggregateDailyAnalytics
Manual analytics snapshot.

All admin functions verify isAdmin: true on the caller before executing. Deploy them with:

terminal
cd functions && npm run deploy

Project structure (admin)

lib/
lib/
├── admin_app.dart               # Admin GoRouter, theme, transitions
├── main.dart                    # kIsWeb → AdminApp, else DocuMindApp
└── features/admin/
    ├── data/
    │   └── admin_repository.dart     # Firestore queries, pagination, cache
    ├── providers/
    │   ├── admin_auth_provider.dart   # Auth state, isAdmin check
    │   └── admin_providers.dart       # Dashboard stats, config providers
    └── presentation/
        ├── screens/
        │   ├── admin_login_screen.dart
        │   ├── dashboard_screen.dart
        │   ├── users_list_screen.dart
        │   ├── user_detail_screen.dart
        │   ├── documents_list_screen.dart
        │   ├── chat_sessions_screen.dart
        │   ├── flashcard_decks_screen.dart
        │   ├── subscriptions_screen.dart
        │   ├── analytics_screen.dart
        │   └── settings_screen.dart
        └── widgets/
            ├── admin_scaffold.dart       # Responsive sidebar + layout
            ├── pagination_controls.dart  # Reusable pagination
            └── stat_card.dart            # Reusable metric card

Firestore indexes

Some admin queries require composite indexes. When you first use a filtered view (e.g., filtering users by Pro status, or documents by type), Firestore will throw an error containing a link to create the required index. Check the browser’s debug console and click the link to create each index automatically.

12

Troubleshooting

“OPENAI_API_KEY environment variable is missing”

Create a .env file in the functions/ directory:

terminal
echo "OPENAI_API_KEY=sk-your-api-key" > functions/.env
firebase deploy --only functions

Firebase Auth: “Sign-In provider is not enabled”

Go to Firebase Console → Authentication → Sign-in method → Enable the provider (Email, Google, Apple).

AdMob: “Failed to load ad”

  • Ensure you are using test ad IDs during development
  • Real ads may take 24-48 hours to start serving after creating ad units
  • Check that the App ID in AndroidManifest.xml / Info.plist matches your AdMob dashboard
  • Ensure the device has internet connectivity

RevenueCat: “No offerings found”

  • Verify products are created in both App Store Connect / Google Play Console
  • Ensure products are attached to an Offering in RevenueCat dashboard
  • Check that your API keys are correct and _useMock = false
  • For iOS, subscriptions may take up to 24 hours to propagate in sandbox

Build fails: “SDK version constraint”

Ensure your Flutter SDK version is 3.41.2 or higher:

terminal
flutter upgrade
flutter --version

iOS build fails: CocoaPods issues

terminal
cd ios
pod deintegrate
pod install --repo-update
cd ..
flutter clean
flutter pub get
flutter run

Syncfusion license warning

Syncfusion provides a community license free for individuals and small businesses (<$1M revenue). Register at syncfusion.com/products/communitylicense and add the license key in main.dart:

main.dart
SyncfusionLicense.registerLicense("YOUR-LICENSE-KEY");

Camera / microphone permission denied

iOS: Descriptions are already configured in Info.plist for NSMicrophoneUsageDescription and NSSpeechRecognitionUsageDescription.

Android: Runtime permissions are requested automatically via the plugins. Ensure CAMERA, RECORD_AUDIO permissions are in AndroidManifest.xml if missing.

13

FAQ

Can I use a different AI model instead of GPT-4o?
Yes! Edit the Cloud Function in functions/index.js. You can use gpt-4o-mini, gpt-3.5-turbo, or even integrate other AI providers like Claude or Gemini by modifying the API call.
What file formats are supported?
PDF (via Syncfusion), TXT, and pasted text are fully supported. You can also scan physical documents using the camera OCR feature (Google ML Kit).
Is there a file size limit?
By default, free users are limited to 5MB per document and Pro users to 50MB. These limits are configurable in the document upload logic and Firestore rules.
How do I change the Firebase project?
Run flutterfire configure --project=YOUR_NEW_PROJECT_ID to regenerate firebase_options.dart, google-services.json, and GoogleService-Info.plist.
Can I disable ads entirely?
Yes. Simply remove or hide the BannerAdWidget from your screens and skip InterstitialAdService.recordActionAndShowAdIfReady() calls. You do not need to remove the AdMob SDK.
Is RevenueCat free?
RevenueCat offers a free tier for apps earning up to $2,500/month in tracked revenue. After that, they charge 1% of tracked revenue. See revenuecat.com/pricing for details.
Does the app work offline?
Document viewing works offline if cached. However, AI Q&A, quiz generation, and cloud functions require an internet connection since they communicate with OpenAI’s API through Firebase Cloud Functions.
How do I add multi-language support?
Use Flutter’s built-in intl package (already included in dependencies). Create ARB files for each locale in lib/l10n/ and configure MaterialApp.localizationsDelegates.
Where are documents stored?
Uploaded documents are stored in Firebase Storage under each user’s UID folder. Document metadata (title, content, dates) is stored in Cloud Firestore.
14

Changelog

Every version published so far. Updates are free for the life of the item.

v1.2.0 · Apr 2026
Admin panel and testing.
v1.1.0
New features update.
v1.0.0
Initial release.
15

Support and licensing

We provide 6 months of support from the date of purchase.

CodeCanyon
Message via your CodeCanyon purchase page
Response time
Within 24–48 business hours
Note
Before contacting support, please check the Troubleshooting and FAQ sections — your issue may already be addressed there.

Our support covers:

  • Bug fixes and issues related to the source code
  • Installation & configuration assistance
  • Firebase, RevenueCat, and AdMob setup guidance
  • General questions about features and customization

Support does not include:

  • Custom feature development or modification
  • Third-party plugin integration beyond what’s included
  • App Store / Play Store submission support

What support covers

  • Six months of support from purchase, extendable at checkout
  • Support covers bugs in the template and questions about how it is put together
  • It does not cover custom feature work, third-party API changes or store review outcomes
  • The Regular licence covers one free end product. Charging users for the app itself needs the Extended licence