Smart Grow

website·Indexed 32 days ago

https://smart-grow.app/

A platform for app deployment and management featuring tools for distributing .ipa, .apk, and .aab test builds, managing secure files like keystores and .p12 certificates, and handling secure variables to keep API keys out of app binaries. It includes development variables for CI consistency, feature flags for remote updates, and certificate management to replace pinning certificates without new releases.

Tokens
2.9K
Snippets
7
Records
25
Agent score
65%

What's inside Smart Grow

  1. Overview of Smart Grow platform capabilities

    Smart Grow is a platform for mobile teams that centralizes development variables, signing files, test builds, and runtime values, organized by app and environment. The platform is divided into several functional areas:

    • Building and Signing: Handled via Development Variables and Secure Files.
    • Test Build Sharing: Handled via App Deployment.
    • Runtime Configuration: Secure Variables, Certificates, and Feature Flags are read by the app at runtime via the SDK.
  2. Manage API keys and endpoints using Smart Grow Secure Variables

    Smart Grow Secure Variables allow you to store runtime values (such as API keys and base URLs) per app and environment. Instead of hardcoding secrets in the app binary or repository, values are managed in the Smart Grow dashboard and fetched at runtime via the SDK. This allows for key rotation and configuration changes without requiring a new app release. Values are encrypted at rest and in transit, and are stored in the device's secure storage (Keychain for iOS/macOS or Android Keystore for Android) between fetches.
  3. Manage granular access control with Roles per app and environment

    The system allows for granular permission management by granting read, write, update, or delete access on a per-module basis. Additionally, roles can be restricted to specific apps and environments to ensure users only have access to the necessary scopes.
  4. Distribute mobile app builds with Smart Grow

    Smart Grow allows you to upload and share mobile app builds (.ipa, .apk, or .aab) with testers using links or QR codes. Builds are organized by app, version, build number, platform, and environment. To ensure security, downloads require sign-in, and releases can be restricted to specific access groups. All build files are stored in a customer-owned S3 bucket.
  5. Install and authenticate the Smart Grow Secure CLI

    The Smart Grow Secure CLI allows developers to pull environment-specific variables from a central dashboard to a local .env file. To get started, install the CLI globally via npm, configure the server URL, and authenticate your device.
    npm i -g @smart-dev-agency/smart-grow-secure-cli
    smart-grow update_config_cli   # set your Smart Grow server URL
    smart-grow login               # sign in on this device
  6. Implement feature flags in Android, iOS, macOS, tvOS, or Flutter apps

    Smart Grow provides a feature flag system available in Android, Apple (iOS, macOS, tvOS), and Flutter SDKs (version 9.1.0+). Developers can ship code behind a flag and remotely toggle its status via the Smart Grow dashboard. The SDK provides the isFeatureEnabled method to check the status of a specific flag key, allowing for a default value to be used if the flag is not found.
    val smartGrow = SmartGrowSecure.init(
        appId = "your-app-id",
        environmentId = "your-environment-id",
        apiToken = "your-api-token",
        serverBaseUrl = "https://smartgrow.your-company.com",
        context = applicationContext,
    )
    
    if (smartGrow.isFeatureEnabled("checkout.new_flow", defaultValue = false)) {
        showNewCheckout()
    }
  7. Manage and download signing files using smart-grow CLI

    The smart-grow service allows developers to store encrypted signing and configuration files (up to 1 MB each) organized by app and environment. These files can be downloaded into a CI runner immediately before the signing step using an API token or a user session.
    # For local development using a user session
    smart-grow login
    smart-grow download_files   # Interactive prompt to pick app, environment and file
    
    # For CI pipelines using an API token
    smart-grow download_files_with_token --output ./signing
  8. Upload and install mobile builds

    The app deployment workflow consists of three main steps:

    1. Upload: Upload the build file (.ipa, .apk, or .aab) via the dashboard or through the API from a CI pipeline, specifying the version, build number, and platform.
    2. Share: Generate a link or QR code and restrict access to specific user groups.
    3. Install: Testers sign in and install the build. iOS builds are installed over-the-air (OTA), and Android App Bundles (.aab) are automatically converted to APKs for installation.
  9. Configure secure file storage for CI/CD

    To set up secure file delivery for a pipeline, follow these steps:

    1. Upload Files: Upload keystores, .p12, .mobileprovision, .json, .env, or .yaml files via the dashboard (max 1 MB per file).
    2. Create API Token: Generate a token scoped to a specific app and environment. Configure an expiry date and define the allowed fingerprints that can use the token.
    3. Integrate in CI: Use the download_files_with_token command in the pipeline to write the files to the runner right before the signing step.
  10. Integrate Smart Grow Secure Variables SDK

    To use secure variables in your application, follow these three steps:

    1. Add values: Create the required variables for each app and environment in the Smart Grow dashboard.
    2. Initialize the SDK: Provide the appId, environmentId, and apiToken when the application starts.
    3. Read at runtime: Use the SDK to fetch variables. The SDK caches values on the device and only downloads updates when changes are detected on the server.

    Supported platforms include Android, iOS, macOS, tvOS, and Flutter. Use getAllSecureData to load both variables and certificates in a single call.

    val smartGrow = SmartGrowSecure.init(
        appId = "your-app-id",
        environmentId = "your-environment-id",
        apiToken = "your-api-token",
        serverBaseUrl = "https://smartgrow.your-company.com",
        context = applicationContext,
    )
    
    val apiBaseUrl = smartGrow.getVariables()
        .first { it.key == "API_BASE_URL" }.value
  11. Rotate pinning certificates without a new app release

    Smart Grow allows you to manage certificates that your app pins or presents centrally per app and environment. Because the app reads these certificates at runtime via the SDK, you can replace an expiring certificate in the dashboard, and the app will pick up the new value on its next fetch, eliminating the need for a new binary release.
  12. Deploy Smart Grow via Self-Hosted or Managed options

    Smart Grow offers two primary deployment models:

    • Self-Hosted: The entire stack runs on your own servers using provided Docker images and an install script. It requires your own database and S3 bucket, and needs outbound internet access to validate the license periodically.
    • Managed: Smart Grow runs a dedicated instance for your team.

    In both deployment models, app builds are stored in an S3 bucket owned by the customer.