Open Source

Build your own Virtuino app

Take the Virtuino Cloud companion app, put your name, logo, icon and colors on it, and publish it as your own — for your clients or your brand. It's a single Flutter file, no Firebase, no secrets. Ready in minutes.

Download source code
Flutter project · ~4 files · MIT-style license (Virtuino Cloud only)

Build Your Own Virtuino App

This is the developer guide for the open-source edition of the Virtuino app. Anyone can download it, rebrand it, and ship a white-label app that opens their Virtuino Cloud dashboards. If you just want to use the official app, read the App User Guide instead.

Want to ship one single dashboard as its own app (short ID baked in, password-only login)? Use the Single-Dashboard App guide instead.
What's inside the download: lib/main.dart (the whole app), pubspec.yaml, assets/logo.png, README.md and LICENSE. The native android/ & ios/ folders are generated fresh in step 1, so they carry your identity from the start.

Prerequisites

1. First run (5 minutes)

Unzip the download, open a terminal in the folder, and run:

flutter create --org com.yourcompany --project-name virtuino_app_user .
flutter pub get
flutter run

The app launches on the login screen and connects to Virtuino Cloud immediately.

Windows — keep the project on the same drive as Flutter & the pub cache. If the SDK / pub cache live on C: but the project is on another drive (e.g. F:), Kotlin incremental compilation can fail with “this and base files have different roots”. Fix: develop on C:, or add kotlin.incremental=false to android/gradle.properties then run flutter clean.
Your application id becomes com.yourcompany.virtuino_app_user. Choose your own reverse-domain (e.g. com.acme) — it must be unique on the stores.

2. Make it yours

App name

WhereWhat to change
Androidandroid/app/src/main/AndroidManifest.xmlandroid:label="Your App"
iOSios/Runner/Info.plistCFBundleDisplayName
In-app titlelib/main.dartMaterialApp(title: 'Your App')

Login logo

Replace assets/logo.png with your own logo (PNG, transparent, ~512 px). No code change needed. By default it shows the Virtuino logo.

App icon (we ship none on purpose)

  1. Put a 1024×1024 PNG at assets/app_icon.png.
  2. In pubspec.yaml, uncomment the flutter_launcher_icons: block and set your brand background color.
  3. Run flutter pub run flutter_launcher_icons.

Colors

Edit the constants near the top of lib/main.dart:

const Color kOrange = Color(0xFFFF4500);   // primary / buttons
const Color kBlue   = Color(0xFF2188FF);   // accents
const Color kBg     = Color(0xFFF0F2F8);   // background

3. Build for release

⚠️ Add the INTERNET permission. flutter create does not add it to the release manifest, so a release build will silently fail all network calls. In android/app/src/main/AndroidManifest.xml, add this just inside <manifest> (above <application>):
<uses-permission android:name="android.permission.INTERNET"/>

Android

  1. Create a keystore (once):
    keytool -genkey -v -keystore my-release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-app
  2. Create android/key.properties (keep it private — never commit):
    storePassword=YOUR_STORE_PASSWORD
    keyPassword=YOUR_KEY_PASSWORD
    keyAlias=my-app
    storeFile=/absolute/path/to/my-release.jks
  3. Wire signing into android/app/build.gradle.kts — see Flutter's Android signing guide.
  4. Build:
    flutter build appbundle --release   # .aab for Play Store
    flutter build apk --release         # .apk for sideload

iOS

Open ios/Runner.xcworkspace in Xcode, set your Team & Bundle ID, then flutter build ipa --release.

Never commit key.properties or your .jks keystore — they sign your app and must stay private.

License

You are free to rebrand, modify, and distribute your own version. The one restriction: the app may be used only as a client of Virtuino Cloud — it may not be repointed to a different backend or service. See the LICENSE file in the download.

Push notifications

This open-source edition does not include OS push notifications (they rely on Virtuino's Firebase project and ship only in the official app). The in-app Alert Logs — the history of triggered alerts — work fully here without any extra setup.

Need the end-user instructions instead? See the Virtuino App User Guide.

Virtuino Cloud — Build Your Own App