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, api-addons upload, the new live streaming integration, and dashboard configuration.
The instructions are based on the current project files, so buyers can follow them directly without digging through the codebase. When the source code includes updated server files, upload those files to Sngine before testing the app.
1. Requirements
The tool version table below was originally verified from official sources on April 24, 2026. Check the official sources again before preparing a final production build:
| 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. |
License Notice
This product is sold only through our official website: store.fluttercrafters.com
2. Install Flutter
- Download Flutter SDK from the official Flutter website.
- Extract it to a fixed location such as
/Users/yourname/development/flutter. - Add
flutter/binto your systemPATH. - Run
flutter doctor. - Complete any missing dependencies reported by Flutter Doctor.
Useful commands
flutter --version
flutter doctor
flutter doctor -v
flutter doctor shows a clean setup for the platforms you want to build.
3. Xcode and Android Studio
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
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 doctoragain 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
5. Upload api-addons to Server
The Timeline app depends on server-side files provided with the source code. These files are usually
inside a folder named api-addons. Uploading only the Flutter project is not enough.
- Find the
api-addonsfolder included with the purchased source code. - Upload the full folder to the root of your Sngine website.
- The final path must be
https://your-domain.com/api-addons/. - Make sure
api-addons/update.phpis accessible before testing the mobile app.
Correct upload location
your-sngine-root/
bootstrap.php
includes/
content/
api-addons/
update.php
admin/
app/
...
Wrong upload locations
content/themes/api-addonsincludes/api-addonsapi-addons/api-addons
Important after upload
After uploading the addon files, open the update link in your browser so the app settings and related backend definitions are registered correctly on your server.
https://your-domain.com/api-addons/update.php
Minimum server checks
- Open
/api-addons/update.phponce after upload. - Confirm your API credentials exist in
/admincp/apis. - Open the app settings dashboard in
/api-addons/admin. - Check that
GET /api-addons/app/settingsreturns valid data.
api-addons server files must be uploaded
and installed on the Sngine server first.
6. Update the Files Included with the Source Code
When you receive an updated Timeline source package, check whether it includes updated server files.
If the package contains api-addons, upload that folder to your Sngine root again and
overwrite the old addon files.
- Download the latest source package from Sngine Pro Timeline.
- Extract the downloaded package on your computer.
- Open the extracted source and look for
api-addonsor any server-side files included with the package. - Back up the existing
api-addonsfolder from your Sngine server. - Upload the new
api-addonsfolder to the Sngine root and overwrite old files. - Run
https://your-domain.com/api-addons/update.phponce after upload. - Open
https://your-domain.com/api-addons/adminand confirm the settings are still correct. - Run the app again and test login, home feed, settings, notifications, and live streaming if enabled.
api-addons files.
7. New Live Streaming Setup
The Timeline app can work with the new Sngine Live Pro system, but live streaming is powered by a separate live server and the Sngine Live Addon. The Timeline app is the mobile interface; it is not the live media server.
fluttercrafters-livestream to the Sngine root and run its install.php wizard.
https://live.example.com.
api-addons files included with the Timeline source code and run api-addons/update.php.
Recommended setup order
- Install the live server by following the Sngine Live Pro server docs.
- Upload and install the Sngine Live Addon by following the Sngine Live Addon guide.
- Upload or update the Timeline
api-addonsfolder from the source code package. - Run
https://your-domain.com/api-addons/update.php. - Open
https://your-domain.com/api-addons/adminand review the app settings. - Open the Timeline app and test create live, watch live, comments, reactions, gifts, PK, and replay flow.
Important domains
| Domain | Example | Purpose |
|---|---|---|
| Sngine website | https://social.example.com |
Main website, Timeline API, login, posts, users, and api-addons. |
| Live server | https://live.example.com |
Realtime live server, WebRTC, RTMP, Socket.IO, recordings, and live dashboard. |
api-addons files before changing Flutter code.
8. 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
9. 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.
10. 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 |
- Update
applicationIdandnamespacefor Android. - Update
PRODUCT_BUNDLE_IDENTIFIERfor iOS. - Create matching Firebase apps for Android and iOS.
- Replace the Firebase configuration files.
- Update any related URL schemes or deep links if needed.
11. Change App Name
The current visible app name is Sngine timeline, and some internal branding still
uses Sngine.
Main files to update
lib/settings.dartfor the default internal app name.android/app/src/main/AndroidManifest.xmlforandroid:label.ios/Runner/Info.plistforCFBundleDisplayNameandCFBundleName.
Old name: Sngine timeline
New name: Your App Name
12. 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
- Replace
assets/branding/app_icon.pngwith your square icon image. - If needed, change
adaptive_icon_backgroundinpubspec.yaml. - Run the icon generator command from the project root.
flutter pub get
dart run flutter_launcher_icons
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
- Replace
assets/branding/splash_light.pngwith your final fullscreen splash design. - Replace all Android native splash assets in the matching
drawable-*folders, not only one file. - Replace the iOS launch assets inside
LaunchImage.imagesetandLaunchBackground.imageset. - If you need a different background color in Flutter, update the color inside
lib/main.dart. - Run a clean build after changing branding assets.
flutter clean
flutter pub get
flutter run
13. 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_inis already included inpubspec.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
- Open the Firebase Console: https://console.firebase.google.com/
- Add an Android app using the final package name from your Flutter project.
- Download the Android config file
google-services.json. - Add an iOS app using the final bundle ID from your Flutter project.
- Download the iOS config file
GoogleService-Info.plist.
Official Google / Firebase links
- Firebase Console: console.firebase.google.com
- Add Firebase to Android: firebase.google.com/docs/android/setup
- Add Firebase to iOS: firebase.google.com/docs/ios/setup
Required setup steps
- Create or use your Firebase project.
- Add an Android app using your final package name.
- Add an iOS app using your final bundle ID.
- Replace
google-services.jsoninandroid/app/. - Copy
GoogleService-Info.plisttoios/Runner/and add it to the iOS Runner target in Xcode. - Update
googleIosClientIdandgoogleAndroidClientIdin your app settings dashboard. - Update the iOS URL scheme in
Info.plistif 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
- Copy
GoogleService-Info.plistintoios/Runner/. - Open
ios/Runner.xcworkspacein Xcode. - Right click
Runnerin the file navigator, then chooseAdd Files to "Runner". - Select
GoogleService-Info.plist. - Make sure
Runnertarget 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.
googleIosClientIdfor iOS Google Sign-In initialization.googleAndroidClientIdfor Android server client configuration.GIDClientIDinios/Runner/Info.plistmust match the iOS client.- The reversed iOS client ID must be present inside
CFBundleURLSchemesinInfo.plist.
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
14. 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.
- Open the license portal.
- Enter your website domain.
- Enter your purchase code.
- Generate and download the app license file.
- Replace the local license file in this path:
sngine-app/lib/core/license/licenses.dart
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 KeyAPI Secret
15. 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
16. 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 |
Legacy Agora value. For the new Sngine Live Pro flow, install the Live Addon and use the live server settings described above. |
api-addons server files |
Must be uploaded from the source package so the Timeline app can read the latest backend settings and live-related endpoints. |
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. - New Sngine Live Pro streaming: requires the live server, Sngine Live Addon, and updated Timeline
api-addonsfiles. - Legacy Agora live streaming: optional. If unused, keep
agoraAppIdempty. - Apple Sign In: the button exists in UI, but the API flow is not wired yet in the current app build.
17. 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.
Recommended: show the main Firebase project dashboard before adding Android and iOS apps.
Recommended: show the Android package name field and the download button for google-services.json.
Recommended: show the bundle ID field and the download button for GoogleService-Info.plist.
Recommended: show where SHA-1 and SHA-256 are added in Firebase Android app settings.
Recommended: show Add Files to "Runner" and confirm the Runner target is checked.
Recommended: show the selected Apple team and the final bundle identifier.
Recommended: show googleIosClientId, googleAndroidClientId, onesignalEnabled, and agoraAppId.
Recommended: show where the OneSignal App ID is copied from the OneSignal dashboard.
Recommended: show the Agora project page where the App ID is copied.
Optional: show the Google OAuth client page if you want to explain where the Google client IDs come from.
18. Release Checklist
- Upload the latest
api-addonsfolder from the source package and runapi-addons/update.php. - If using the new live streaming flow, install Sngine Live Pro and the Sngine Live Addon first.
- Confirm the Live Addon was installed with the correct live server URL.
- Generate and replace
lib/core/license/licenses.dartwith the customer license file. - Confirm
API KeyandAPI Secretare active in/admincp/apis. - Change Android
applicationIdand iOSbundle ID. - Replace
google-services.jsonandGoogleService-Info.plist. - Update Google client IDs in app settings and iOS
Info.plist. - Change app name, launcher icon, and splash assets.
- Create the Android release keystore and configure
android/key.properties. - In Xcode, set your Apple team in
Signing & Capabilitiesand verify the bundle identifier. - Update the app version in
pubspec.yamlbefore the final store build. - Run
flutter clean,flutter pub get, then test Android and iOS separately.
version: 1.0.0+1
19. Troubleshooting
Google Sign-In fails on Android
- Check that
google-services.jsonmatches the final Android package name. - Check that the correct
SHA-1andSHA-256were added in Firebase. - Check that
googleAndroidClientIdis correct in app settings.
Google Sign-In fails on iOS
- Check that
GoogleService-Info.plistwas added to theRunnertarget in Xcode. - Check that
GIDClientIDand the reversed URL scheme inInfo.plistmatch 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/adminand review the app settings values. - Check that
GET /api-addons/app/settingsreturns the expected public settings. - Check that the license file belongs to the same final website domain.
New live streaming does not start
- Confirm Sngine Live Pro is installed and the live server domain is online.
- Open
/fluttercrafters-livestream/install.phpas an admin and verify the saved live server URL. - Upload the latest Timeline
api-addonsfolder from the source package. - Run
/api-addons/update.phpagain after uploading the files. - Test the web live flow in Sngine before testing the same flow from the Timeline app.
Push notifications do not work
- Make sure
onesignalEnabledis enabled in app settings. - Make sure a valid
OneSignal App IDis configured. - Make sure the device granted notification permission.
The app fails immediately on startup
- Check that
lib/core/license/licenses.dartwas replaced with a valid generated license file. - Run
flutter cleanandflutter pub getafter configuration changes. - Check the terminal or Xcode/Android Studio logs for the first thrown error.
20. 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.phpafter uploading or updating the backend addon files. - When the source package includes updated server files, upload those included files before rebuilding the mobile app.
- The new live streaming flow requires Sngine Live Pro, the Sngine Live Addon, and the Timeline
api-addonsupdate. - 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 cleanandflutter pub getafter major configuration changes. - Always test Android and iOS builds separately before final release.
21. Official Sources
- Flutter Installation Guide
- Flutter SDK Archive
- Flutter Android Deployment
- Flutter iOS Deployment
- Android App Signing
- Add SHA Fingerprints in Firebase
- Add Firebase to Android
- Add Firebase to iOS
- Apple Releases
- Xcode Updates
- Android Latest Updates
- Android Studio