Welcome to the Ensemble! This repository houses the Flutter runtime, various modules, and an example app called the Starter App that utilizes different packages. Ensemble allows you to build, publish, and iterate native and web apps seamlessly within your browser.
Ensemble is a revolutionary platform that enables app development through a declarative language. Rather than traditional coding, you configure your app using this language, allowing for rapid development and deployment. Key features of Ensemble include:
- Native Experience: Ensemble apps are native to each platform - iOS, Android, and web.
- Instant Updates: App definitions are pushed to clients, enabling instant updates without waiting for app store approvals.
- Cutting-Edge Technologies: Ensemble apps leverage the latest front-end technologies, such as Flutter for iOS and Android, and React for web, ensuring you're always at the forefront without worrying about technical debt.
This monorepo contains the following modules:
- Auth Module: Handles authentication functionalities.
- Bracket Module: Manages brackets for various purposes.
- Camera Module: Provides camera-related features.
- Connect Module: Facilitates connectivity features.
- Contacts Module: Manages contact information.
- Deeplink Module: Handles deep linking functionalities.
- File Manager Module: Manages files within the app.
- Firebase Analytics Module: Integrates Firebase analytics into Ensemble apps.
- Ensemble comes bundled with the Starter (located in /starter) to run any Ensemble-powered apps.
- First initialize the modules with
melos bootstrap
(see section on Melos Integration below), then follow the instructions at Starter README.
- Ensemble Website
- Ensemble Docs
- Ensemble Studio
- Ensemble Go (App Store)
- Ensemble Preview (Play Store)
This monorepo is managed using Melos, a tool for managing Dart and Flutter monorepos. Below are some useful commands:
- Initialize Melos:
melos bootstrap
- Initializes the monorepo and installs dependencies. - Add Dependency:
melos add
- Add a dependency to one or more packages. - Run Scripts:
melos exec
- Run a script in each package. - Publish Packages:
melos release
- Publishes changed packages.
To contribute a new widget or enhance an existing one in Ensemble, follow these steps:
- All Ensemble widgets can be found here.
- Run the Kitchen Sink app locally by visiting this link and use the appId as described above.
- Explore how each widget works and how the YAML is mapped to the Flutter widget.
- Create your own app and screens with your widget (or enhanced widget) in the studio. Ensure it works flawlessly.
- When ready, create a pull request, and our team will review and provide feedback.
To release a new version of your monorepo, follow these steps below.
To update the version of package:
melos version <package-name> <version>
e.g: melos version ensemble 1.0.3
To push this version on github with tag:
git push --follow-tags origin main
(optional) Create a Release on GitHub:
- Go to your repository on GitHub.
- Click on the "Releases" tab.
- Click on "Draft a new release".
- Fill in the tag version (e.g.,
v1.2.3
), release title, and description. - Click "Publish release".
This project is tested with BrowserStack
By following these steps, you can ensure a smooth release process for your new version, including updating all necessary Git references in your Flutter projects.
Thank you for contributing to Ensemble! 🚀