Important Notice Do not use cracked, nulled, leaked, or unauthorized copies of this product. To receive valid updates, support, and secure files, purchase the official version only from store.fluttercrafters.com.

Sngine timeline App Documentation

This document explains the basic setup process for the Sngine Flutter app before delivery or website distribution. It covers Flutter installation, development tools, first run, package name changes, app name changes, app icon and splash replacement, Google Login setup, and basic dashboard configuration.

The instructions are based on the current project files, so buyers can follow them directly without digging through the codebase.

Flutter App Official Package English Docs Beginner Friendly

1. Requirements

At the time this document was updated on April 24, 2026, the latest stable versions shown in the official sources were:

Tool Stable Version Notes
Flutter 3.41.5 Reflected by the official Flutter documentation at the time of writing.
Xcode 26.4.1 Shown on Apple Releases on April 16, 2026.
Android Studio Panda 4 | 2025.3.4 Shown as the latest stable release on April 21, 2026.
Always use stable releases, not beta or canary versions, when preparing the project for production or customer delivery.

License Notice

This product is sold only through our official website: store.fluttercrafters.com

Do not use, distribute, or rely on nulled, leaked, cracked, or unauthorized copies. For security, updates, and valid support, use only an officially purchased version from our website.

2. Install Flutter

  1. Download Flutter SDK from the official Flutter website.
  2. Extract it to a fixed location such as /Users/yourname/development/flutter.
  3. Add flutter/bin to your system PATH.
  4. Run flutter doctor.
  5. Complete any missing dependencies reported by Flutter Doctor.

Useful commands

flutter --version
flutter doctor
flutter doctor -v
Continue only after flutter doctor shows a clean setup for the platforms you want to build.

3. Xcode and Android Studio

Xcode Install Xcode from Apple, open it once, accept the license agreement, and let it install the required additional components.
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
Android Studio Install Android Studio, then open SDK Manager and make sure Android SDK, Build Tools, Platform Tools, Emulator, and at least one device image are installed.

Important

  • Xcode is required if you want to build the iOS version on macOS.
  • Android Studio is required for Android SDK, emulator, and platform tools.
  • After installation, run flutter doctor again and confirm everything is ready.

4. Run the Project

flutter pub get
flutter run

Build release files

flutter build apk --release
flutter build appbundle --release
flutter build ios --release
Before building release files, make sure you have already changed the package name, app name, Firebase files, and signing settings.

5. Upload to Server

Yes, the server-side files must also be uploaded if you want the mobile app to work correctly with the backend features provided with this package.

  • Upload the backend addon files to your server in the correct project location.
  • Make sure the addon is installed and accessible from your website domain.
  • Use the admin/backend setup before testing the app login and app settings.

Important after upload

After uploading the addon files, run the addon update script so the app settings and related backend definitions are registered correctly on your server.

https://your-domain.com/api-addons/update.php

Or run it from the server terminal if your hosting allows CLI access:

php api-addons/update.php

Minimum server checks

  1. Open /api-addons/update.php once after upload.
  2. Confirm your API credentials exist in /admincp/apis.
  3. Open the app settings dashboard in /api-addons/admin.
  4. Check that GET /api-addons/app/settings returns valid data.
The Flutter app alone is not enough. The related server files must be uploaded and installed on the server first.

6. Create Android Keystore

Before publishing the Android version, create your own release keystore. This is required for signed release builds and for long-term app updates on Google Play.

Create a keystore

keytool -genkeypair -v \
  -keystore ~/your-app-release-key.jks \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000 \
  -alias your_key_alias

Recommended next step

After creating the keystore, store its values in your Android signing configuration, usually through android/key.properties and your Gradle release signing setup.

storePassword=YOUR_STORE_PASSWORD
keyPassword=YOUR_KEY_PASSWORD
keyAlias=your_key_alias
storeFile=/full/path/to/your-app-release-key.jks
Keep the keystore file and passwords in a safe place. If you lose them, updating the same app on Google Play can become difficult or impossible.

7. Get SHA Fingerprints for Google Login

Google Sign-In for Android often requires your app SHA certificate fingerprints, especially SHA-1 and sometimes SHA-256, inside Firebase or Google Cloud settings.

Get SHA from your release keystore

keytool -list -v \
  -alias your_key_alias \
  -keystore ~/your-app-release-key.jks

Get SHA from the default debug keystore

keytool -list -v \
  -alias androiddebugkey \
  -keystore ~/.android/debug.keystore \
  -storepass android \
  -keypass android

Copy the SHA-1 and SHA-256 values and add them to your Android app inside Firebase before downloading the final google-services.json file.

If Google Login does not work on Android, the first thing to check is whether the correct package name and SHA fingerprints were added to your Firebase project.

8. Change Package Name / Bundle ID

The current project still uses default test identifiers. Before publishing the app, replace them with your final package name, for example com.yourcompany.yourapp.

Main files to update

Platform File Current Value
Android android/app/build.gradle.kts com.example.sngineapp
iOS ios/Runner.xcodeproj/project.pbxproj com.example.sngineapp
Android Firebase android/app/google-services.json Must be replaced with a file that matches your final package name
  1. Update applicationId and namespace for Android.
  2. Update PRODUCT_BUNDLE_IDENTIFIER for iOS.
  3. Create matching Firebase apps for Android and iOS.
  4. Replace the Firebase configuration files.
  5. Update any related URL schemes or deep links if needed.

9. Change App Name

The current visible app name is Sngine timeline, and some internal branding still uses Sngine.

Main files to update

  • lib/settings.dart for the default internal app name.
  • android/app/src/main/AndroidManifest.xml for android:label.
  • ios/Runner/Info.plist for CFBundleDisplayName and CFBundleName.
Old name: Sngine timeline
New name: Your App Name

10. Change App Icon and Splash Screen

The project already includes separate branding files for the launcher icon and splash screen. Replace those files with your own final branding before building the release version.

App icon files

Purpose File Notes
Main icon source assets/branding/app_icon.png Used by flutter_launcher_icons for Android and iOS.
Launcher icon config pubspec.yaml Contains the flutter_launcher_icons settings and adaptive Android background color.

How to replace the app icon

  1. Replace assets/branding/app_icon.png with your square icon image.
  2. If needed, change adaptive_icon_background in pubspec.yaml.
  3. Run the icon generator command from the project root.
flutter pub get
dart run flutter_launcher_icons
After running the command, the generated launcher icons are updated automatically for Android and iOS.

Splash screen files

Platform File Usage
Flutter in-app splash assets/branding/splash_light.png Displayed by the splash widget in lib/main.dart.
Optional dark splash asset assets/branding/splash_dark.png Keep it updated if you also use dark-mode branding in future changes.
Android native splash image android/app/src/main/res/drawable-*/splash.png Loaded by launch_background.xml. Replace all density versions such as mdpi, hdpi, xhdpi, xxhdpi, and xxxhdpi.
Android native splash background android/app/src/main/res/drawable*/background.png Full-screen background image behind the centered splash logo, including the drawable-v21 and dark-mode versions if you use them.
iOS splash logo images ios/Runner/Assets.xcassets/LaunchImage.imageset/ Replace LaunchImage.png, @2x, @3x and dark variants.
iOS splash background ios/Runner/Assets.xcassets/LaunchBackground.imageset/ Replace background.png and darkbackground.png if needed.

How to replace the splash screen

  1. Replace assets/branding/splash_light.png with your final fullscreen splash design.
  2. Replace all Android native splash assets in the matching drawable-* folders, not only one file.
  3. Replace the iOS launch assets inside LaunchImage.imageset and LaunchBackground.imageset.
  4. If you need a different background color in Flutter, update the color inside lib/main.dart.
  5. Run a clean build after changing branding assets.
flutter clean
flutter pub get
flutter run
Do not change only the Flutter splash image and leave the native Android/iOS launch assets unchanged, otherwise users may see different branding during app startup.

11. Google Login

Google Sign-In is already included in the current project, but it must be configured correctly before release.

What already exists in the project

  • google_sign_in is already included in pubspec.yaml.
  • Google settings exist in lib/settings.dart.
  • Android Firebase config exists in android/app/google-services.json.
  • iOS Google client setup exists in ios/Runner/Info.plist.

What these files do

File Platform Purpose Where it must go
google-services.json Android Contains your Firebase Android app identifiers, project settings, API keys, and Google services configuration. android/app/google-services.json
GoogleService-Info.plist iOS Contains your Firebase iOS app identifiers, project settings, reversed client ID, and Google services configuration. ios/Runner/GoogleService-Info.plist

Where to download them

  1. Open the Firebase Console: https://console.firebase.google.com/
  2. Add an Android app using the final package name from your Flutter project.
  3. Download the Android config file google-services.json.
  4. Add an iOS app using the final bundle ID from your Flutter project.
  5. Download the iOS config file GoogleService-Info.plist.

Official Google / Firebase links

Required setup steps

  1. Create or use your Firebase project.
  2. Add an Android app using your final package name.
  3. Add an iOS app using your final bundle ID.
  4. Replace google-services.json in android/app/.
  5. Copy GoogleService-Info.plist to ios/Runner/ and add it to the iOS Runner target in Xcode.
  6. Update googleIosClientId and googleAndroidClientId in your app settings dashboard.
  7. Update the iOS URL scheme in Info.plist if your Google iOS client changes.

Android placement

The Android file must be placed directly inside the app module, not in the root project folder. The correct path is:

sngine-app/android/app/google-services.json

If this file belongs to a different package name than your current applicationId, Google login and Firebase services will fail on Android.

iOS placement

The iOS file must be copied into the Runner app folder and included in the Xcode project so it is bundled with the app at build time.

sngine-app/ios/Runner/GoogleService-Info.plist
  1. Copy GoogleService-Info.plist into ios/Runner/.
  2. Open ios/Runner.xcworkspace in Xcode.
  3. Right click Runner in the file navigator, then choose Add Files to "Runner".
  4. Select GoogleService-Info.plist.
  5. Make sure Runner target is checked before confirming.

Google client IDs used by the app

This project does not rely only on the Firebase files. The Flutter login flow also reads Google client IDs from the public app settings returned by the backend.

  • googleIosClientId for iOS Google Sign-In initialization.
  • googleAndroidClientId for Android server client configuration.
  • GIDClientID in ios/Runner/Info.plist must match the iOS client.
  • The reversed iOS client ID must be present inside CFBundleURLSchemes in Info.plist.
Copying GoogleService-Info.plist into the folder alone is not always enough. In iOS, it should also be added to the Runner target inside Xcode.

Quick example paths

Android:
android/app/google-services.json

iOS:
ios/Runner/GoogleService-Info.plist
If you change the package name or bundle ID, you must regenerate your Google and Firebase setup files.

12. License Activation

Before using the app in production, generate and download your license from the official license portal.

License portal

https://license.fluttercrafters.com/

Required information

  • Your website domain.
  • Your purchase code.
  1. Open the license portal.
  2. Enter your website domain.
  3. Enter your purchase code.
  4. Generate and download the app license file.
  5. Replace the local license file in this path:
sngine-app/lib/core/license/licenses.dart
The downloaded license file must be copied to sngine-app/lib/core/license/licenses.dart before building the app.

API credentials from your script admin panel

You will also need the API credentials from your own website admin panel:

https://your-domain.com/admincp/apis
  • API Key
  • API Secret
Make sure the domain used in the license portal matches the same website domain used by your installed script.

13. Dashboard Settings

After installation, some app-related settings can be changed from the admin dashboard, such as general app options, visible interface items, branding-related options, and other basic settings.

Example URL

https://your-domain.com/api-addons/admin
Available options may vary depending on the installed version on your server.

14. App Settings and Integrations

The app loads public settings from the backend during startup. This means some important values should be configured from the server dashboard, not only from local Flutter files.

Main public settings endpoint

GET https://your-domain.com/api-addons/app/settings

Main admin endpoints

https://your-domain.com/api-addons/admin
https://your-domain.com/api-addons/admin/app/settings

Important values to configure in app settings

Key Why it matters
appName Used by the app UI and should match your final branding.
googleIosClientId Required by iOS Google Sign-In inside Flutter.
googleAndroidClientId Required by Android Google Sign-In server client configuration.
onesignalEnabled Controls whether OneSignal is initialized when the app starts.
onesignalAppId / onesignalTimelineAppId Required if you want push notifications to work.
agoraAppId Required only if you want live streaming features.
messengerUrlScheme Used when opening the separate Messenger app from the timeline app.
messengerAndroidPackageId Used for Play Store fallback links to Messenger.
messengerDomain Used for deep links and store fallback behavior.

Optional integrations

  • OneSignal: optional. If unused, keep onesignalEnabled=false.
  • Agora live streaming: optional. If unused, keep agoraAppId empty.
  • Apple Sign In: the button exists in UI, but the API flow is not wired yet in the current app build.
If the app starts but branding, Google Sign-In, push notifications, or live streaming behave differently from your expectation, check the public app settings from the server before editing Flutter code.

15. Screenshots Guide

This section is prepared for real setup screenshots. Save your screenshots inside docs/screenshots/ using the exact filenames below and they will appear here automatically.

Firebase Project Overview Firebase project overview screenshot

Recommended: show the main Firebase project dashboard before adding Android and iOS apps.

Firebase Android App Setup Firebase Android app setup screenshot

Recommended: show the Android package name field and the download button for google-services.json.

Firebase iOS App Setup Firebase iOS app setup screenshot

Recommended: show the bundle ID field and the download button for GoogleService-Info.plist.

Firebase SHA Fingerprints Firebase SHA fingerprints screenshot

Recommended: show where SHA-1 and SHA-256 are added in Firebase Android app settings.

Xcode GoogleService-Info.plist Xcode GoogleService Info plist screenshot

Recommended: show Add Files to "Runner" and confirm the Runner target is checked.

Xcode Signing and Capabilities Xcode signing and capabilities screenshot

Recommended: show the selected Apple team and the final bundle identifier.

App Settings Dashboard App settings dashboard screenshot

Recommended: show googleIosClientId, googleAndroidClientId, onesignalEnabled, and agoraAppId.

OneSignal App Settings OneSignal app id screenshot

Recommended: show where the OneSignal App ID is copied from the OneSignal dashboard.

Agora Project Key Agora app id screenshot

Recommended: show the Agora project page where the App ID is copied.

Google API Credentials Google OAuth client screenshot

Optional: show the Google OAuth client page if you want to explain where the Google client IDs come from.

Use real screenshots from your current dashboards and tools. Do not use outdated images from another project, otherwise buyers may follow the wrong fields.

16. Release Checklist

  1. Upload the backend addon files and run api-addons/update.php.
  2. Generate and replace lib/core/license/licenses.dart with the customer license file.
  3. Confirm API Key and API Secret are active in /admincp/apis.
  4. Change Android applicationId and iOS bundle ID.
  5. Replace google-services.json and GoogleService-Info.plist.
  6. Update Google client IDs in app settings and iOS Info.plist.
  7. Change app name, launcher icon, and splash assets.
  8. Create the Android release keystore and configure android/key.properties.
  9. In Xcode, set your Apple team in Signing & Capabilities and verify the bundle identifier.
  10. Update the app version in pubspec.yaml before the final store build.
  11. Run flutter clean, flutter pub get, then test Android and iOS separately.
version: 1.0.0+1
If every item above is completed, the buyer should be able to run, brand, configure, and prepare the app for store submission without digging through the source code.

17. Troubleshooting

Google Sign-In fails on Android

  • Check that google-services.json matches the final Android package name.
  • Check that the correct SHA-1 and SHA-256 were added in Firebase.
  • Check that googleAndroidClientId is correct in app settings.

Google Sign-In fails on iOS

  • Check that GoogleService-Info.plist was added to the Runner target in Xcode.
  • Check that GIDClientID and the reversed URL scheme in Info.plist match your current iOS client.
  • Check that the iOS bundle ID matches the Firebase iOS app exactly.

App opens but some settings look wrong

  • Open /api-addons/admin and review the app settings values.
  • Check that GET /api-addons/app/settings returns the expected public settings.
  • Check that the license file belongs to the same final website domain.

Push notifications do not work

  • Make sure onesignalEnabled is enabled in app settings.
  • Make sure a valid OneSignal App ID is configured.
  • Make sure the device granted notification permission.

The app fails immediately on startup

  • Check that lib/core/license/licenses.dart was replaced with a valid generated license file.
  • Run flutter clean and flutter pub get after configuration changes.
  • Check the terminal or Xcode/Android Studio logs for the first thrown error.

18. Important Notes

  • Use a unique package name before uploading to Google Play or the App Store.
  • Replace all demo Firebase files with your own production files.
  • Update launcher icons and native splash assets for both Android and iOS before release.
  • Run api-addons/update.php after uploading or updating the backend addon files.
  • Some runtime values are loaded from /api-addons/app/settings, not only from local Flutter code.
  • Complete license activation and confirm your API credentials before production use.
  • Some app settings can be managed later from the admin dashboard after installation.
  • Run flutter clean and flutter pub get after major configuration changes.
  • Always test Android and iOS builds separately before final release.

19. Official Sources

Version numbers in this document were verified from official sources on April 24, 2026.