- Solara Website
- Online Dashboard
- Infinite Project
- Getting Started
- Brand Management
- Brands Overview
- Code Signing
- Advanced Topics
- What is Solara?
- Why Solara?
- How to Manage Brands With Solara?
- How to Integrate Solara?
- What is The Brand?
- How Does Solara Work with Brands?
- The Flow of Brand Switching Operation
- Brand Artifacts
- Brand Configurations
- Codebase Development
- Getting Started
- Solara Development
- Contributing
- License
- Code of Conduct
Check out our promotional video!
Solara is a comprehensive Ruby library designed to streamline the setup and management of white label applications across various platforms, including iOS, Android, Flutter, and Web (Web COMING SOON).
With Solara, you can effortlessly manage the dynamic components of your white label apps using a user-friendly Command Line Interface (CLI) and a powerful dashboard that simplifies the administration of multiple brands, enabling efficient control over app configurations.
The library allows for quick adjustments to resources and configurations, ensuring that your applications remain consistent and aligned with brand guidelines.
Whether you are launching a new product or maintaining existing apps, Solara empowers you to handle everything from a single location.
White label apps are ready-made apps that businesses can personalize with their own branding. They help companies quickly launch their services without needing to build an app from scratch. This approach saves time and money while allowing businesses to focus on their brand and customers.
As illustrated in the previous diagram, Solara utilizes a single codebase that allows you to create an infinite number of apps simply by adding a new brand for each one. In the context of Solara, a brand consists of a set of Configurations and Resources tailored for a specific app, as detailed in What is The Brand? below. Solara streamlines the management of these brands, automatically preparing the codebase to support them without requiring any manual intervention.
Imagine you've developed (or planning to develop) an e-commerce app and need to sell it to countless customers. To achieve this, your e-commerce codebase must be dynamic enough to accommodate essential changes, such as the app name, identifier, icon, theme, version, base URL, and custom configurations—like whether to enable or disable specific features—and more. This is illustrated in the diagram below:
Solara addresses this challenge by introducing a centralized brand management system, enabling you to generate an infinite number of apps efficiently, as illustrated below:
This centralized approach not only simplifies brand management but also enhances the flexibility of your codebase, allowing you to serve a diverse customer base with ease.
The same applies if you need to publish countless apps to your personal store account, simply by changing the content and theme of each app.
Here are some advantages of using Solara:
Solara supports iOS, Android, and Flutter, allowing for cohesive management across different platforms.
Solara offers a single point of control for managing all dynamic components of white label apps, making updates and consistency easier to achieve.
The intuitive dashboard allows for quick navigation and management of multiple brands, streamlining the administrative process.
With robust command-line interface commands, developers can efficiently configure and control app settings without needing to navigate through the interfaces. Solara’s robust command-line interface integrates seamlessly with dev ops tools like Fastlane, GitHub Actions, and other tools, allowing for automated deployment, continuous integration, and streamlined workflows. This enhances efficiency and reduces manual effort in managing white label apps.
Switching between brands is a piece of cake with Solara’s CLI or centralized dashboard. This functionality allows developers to change configurations without altering the Git repository, facilitating smooth team collaboration and development.
Adding or removing brands is straightforward with Solara’s CLI or centralized dashboard. This feature simplifies the process of editing configurations, ensuring that teams can quickly adapt to changes without any hassle.
This powerful feature automatically detects issues in application or brand configurations, running health checks every time you use Solara. Users can also manually trigger it through the CLI or dashboard, ensuring that your brands remain in optimal condition and reducing potential problems before they arise.
Easily switch and manage multiple brands, ensuring that each app remains aligned with its specific branding requirements.
By automating and simplifying configuration tasks, Solara enhances developer productivity and reduces the potential for errors.
As your app portfolio grows, Solara can easily adapt to manage additional brands and dynamic components without a hitch.
Ensure that all apps maintain a uniform look and feel, enhancing user experience across different platforms.
Solara offers powerful tools for managing your brands. The Solara Management Tools Diagram below illustrates these tools:
For the detailed guidance, please refer to Brand Management.
To integrate Solara into your project, you must first initialize it at the root directory. Open your terminal, ensure your current directory is set to the root of your project, and then run the following command:
solara init
Check the full documentation in Getting Started.
Once initialization is complete, two directories will be created in the root of your project: solara
and .solara
.
Refer to the image below for a visual guide:
Check Infinite Project for the full details.
The solara
directory contains all the essential files required for Solara. Below is its structure:
For comprehensive details, check the Brands Overview documentation.
The most critical directory is solara/brand/brands/
, which we will explore in more detail below:
The solara/brand/brands/
directory houses all brand-specific content.
This raises an important question: What is a brand in the context of Solara? Below are the details:
The brand in the context of Solara is a set of configurations and resources for a specific app. The brand includes:
- Configurations: JSON files, or other formats, describing the requirement of the final app.
- Resources: Include images, icons, layouts, and other assets.
See the diagram below
In the previous Solara Diagram, we explored how Solara transforms a single codebase into multiple apps, each tailored to specific brand configurations.
This transformation process is referred to as Brand Switching in the context of Solara. Below is a diagram illustrating this process:
The brand switching process runs in a sequential flow illustrated by the diagram below:
This diagram illustrates the sequential flow from preparing the codebase to generating code and finally deploying resources. Each phase builds upon the previous one, leading to a smooth transition for managing brand configurations.
And here is the details:
-
Codebase Preparation
- Description: This phase transforms the existing codebase into a dynamic structure capable of accommodating various brand configurations. It ensures that the application can seamlessly adapt to different brand requirements. For example, the codebase will enable the dynamic display of the app launcher (or app icon) based on each brand's specific configurations. This foundational work allows the application to respond flexibly to brand identity changes, enhancing user experience and consistency across different brand environments.
-
Code Generation
- Description: Generate essential configuration files tailored for each brand. This includes, for instance,
converting
brand_config.json
into platform-specific files such asBrandConfig.swift
for iOS,BrandConfig.kt
for Android, andbrand_config.dart
for Flutter. These files serve as the foundation for brand-specific customization.
Explained in detail in Brand Configuration
- Description: Generate essential configuration files tailored for each brand. This includes, for instance,
converting
-
Resource Deployment
- Description: Transfer brand-specific resources, including images, icons, layouts, and other assets, to their
designated locations within each platform. For example:
- Android: Copy
res
tosrc/main/res/solara_artifacts
- iOS: Copy
assets
toAssets.xcassets/SolaraArtifacts
- Flutter: Copy
assets
to the./assets/solara_artifacts
folder
- Android: Copy
- Description: Transfer brand-specific resources, including images, icons, layouts, and other assets, to their
designated locations within each platform. For example:
This is explained in detail in the next section Brand Artifacts
Solara deploys resources and generated code into specific directories within the codebase, referred to as Solara Artifacts. The following diagram illustrates the deployment of artifacts across each platform:
-
Android
- Paths:
./solara_artifacts
: Contains the generatedbrand.properties
file../app/src/main/solara_artifacts
:- This path is where the brand's
res
directory is deployed. - It is included as a
sourceSet
in theapp/build.gradle
to generate resources for Android.
- This path is where the brand's
./app/src/main/java/solara_artifacts
:- This directory holds the
BrandConfig.kt
andBrandTheme.kt
files.
- This directory holds the
./app/src/main/assets/solara_artifacts
:- Contains assets that are directly utilized in the Android application.
- Paths:
-
iOS
- Paths:
SolaraArtifacts
:- This directory includes
BrandConfig.kt
,BrandTheme.kt
,Brand.xcconfig
, and theFonts
folder.
- This directory includes
Assets.xcassets/SolaraArtifacts
:- A dedicated location for assets deployed by Solara.
- Paths:
-
Flutter
- Paths:
./lib/solara_artifacts
:- Contains the
brand_config.dart
andbrand_theme.dart
files.
- Contains the
./assets/solara_artifacts
:- A directory for various assets used in the Flutter application.
./assets/solara_fonts
:- Specifically designated for font assets utilized in Flutter.
- Paths:
Solara allows for flexible and customizable configurations for each brand, enabling tailored settings based on specific
needs. These configurations are stored in the BRAND_KEY/shared/brand_config.json
file, serving as the central hub for
brand-specific settings.
The diagram below illustrates how the brand_config.json
is generated for each platform, ensuring that all necessary
configurations are appropriately formatted and accessible.
-
Central Configuration File
BRAND_KEY/shared/brand_config.json
: This is the main configuration file that includes all customizable settings for your brand. It acts as a template for generating platform-specific configuration files.
-
Platform-Specific Configurations:
-
Flutter:
brand_config.dart
: This Dart file containsBrandConfig
class which is generated from the central configuration for use in Flutter applications. It allows developers to access brand settings directly within the Flutter framework.
-
Android:
BrandConfig.kt
: For Android applications, this Kotlin file is generated from the central configuration file, making them available for seamless integration into Android app development.
-
iOS:
BrandConfig.swift
: This Swift file is generated for iOS applications, providing access to the brand configurations for iOS developers.
-
The generation of these platform-specific files from the central brand_config.json
ensures that your brand
configurations are consistently applied and easily manageable across different environments, enhancing the development
process and user experience.
In Solara, brand management is handled by Solara itself, while the responsibility for codebase development lies with the developer. As a developer, your role is to implement the codebase according to the specified requirements, using the Solara artifacts generated during the switch operation.
For comprehensive details, please refer to the following links in Infinite Project:
- Flutter Development: Comprehensive guidelines for integrating Solara into your Flutter project.
- iOS Development: Step-by-step instructions for incorporating Solara into your iOS project.
- Android Development: Detailed instructions for adding Solara to your Android project.
Please visit the Wiki, for a comprehensive guide on installation and getting started.
To contribute to Solara development, please refer to the Solara Development Documentation.
Bug reports and pull requests are welcome on GitHub at Solara. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
The gem is available as open source under the terms of the MIT License.
Everyone interacting in the Solara project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the code of conduct.
Explore the Wiki for more information on effectively using Solara! If you have any questions or need further assistance, feel free to reach out.