Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vyuh-tech/vyuh
Build Modular, Scalable, CMS-driven Flutter Apps
https://github.com/vyuh-tech/vyuh
app cms dart flutter framework modular server-driven-ui
Last synced: 3 days ago
JSON representation
Build Modular, Scalable, CMS-driven Flutter Apps
- Host: GitHub
- URL: https://github.com/vyuh-tech/vyuh
- Owner: vyuh-tech
- License: other
- Created: 2024-03-14T13:20:08.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-12-30T03:54:30.000Z (4 days ago)
- Last Synced: 2024-12-30T04:27:46.868Z (4 days ago)
- Topics: app, cms, dart, flutter, framework, modular, server-driven-ui
- Language: Dart
- Homepage: https://vyuh.tech
- Size: 6.5 MB
- Stars: 82
- Watchers: 5
- Forks: 14
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
Vyuh Framework
Build Modular, Scalable, CMS-driven Flutter Apps
Docs |
Website
[![Codecov](https://img.shields.io/codecov/c/github/vyuh-tech/vyuh?token=5NL6KJ70AR&logo=codecov&style=for-the-badge)](https://codecov.io/github/vyuh-tech/vyuh)
[![Publish Action](https://img.shields.io/github/actions/workflow/status/vyuh-tech/vyuh/publish.yml?label=Publish&logo=github&style=for-the-badge)](https://github.com/vyuh-tech/vyuh/actions/workflows/publish.yml)
[![Discord](https://img.shields.io/discord/1198906057502769252?style=for-the-badge&logo=discord)](https://discord.gg/b49sbjqszG)
[![AI-Code Agent](https://img.shields.io/badge/AI-Code%20Agent-EB9FDA?style=for-the-badge)](https://app.commanddash.io/agent/github_vyuh-tech_vyuh)| Packages |
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| _Sanity Integration_ |
| [![sanity_client](https://img.shields.io/pub/v/sanity_client.svg?label=sanity_client&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/sanity_client) |
| [![flutter_sanity_portable_text](https://img.shields.io/pub/v/flutter_sanity_portable_text.svg?label=flutter_sanity_portable_text&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/flutter_sanity_portable_text) |
| _Vyuh_ |
| [![vyuh_core](https://img.shields.io/pub/v/vyuh_core.svg?label=vyuh_core&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_core) |
| [![vyuh_extension_content](https://img.shields.io/pub/v/vyuh_extension_content.svg?label=vyuh_extension_content&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_extension_content) |
| [![vyuh_plugin_content_provider_sanity](https://img.shields.io/pub/v/vyuh_plugin_content_provider_sanity.svg?label=vyuh_plugin_content_provider_sanity&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_plugin_content_provider_sanity) |
| [![vyuh_cache](https://img.shields.io/pub/v/vyuh_cache.svg?label=vyuh_cache&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_cache) |
| [![vyuh_feature_system](https://img.shields.io/pub/v/vyuh_feature_system.svg?label=vyuh_feature_system&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_feature_system) |
| [![vyuh_feature_developer](https://img.shields.io/pub/v/vyuh_feature_developer.svg?label=vyuh_feature_developer&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_feature_developer) |
| [![vyuh_feature_auth](https://img.shields.io/pub/v/vyuh_feature_auth.svg?label=vyuh_feature_auth&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_feature_auth) |
| [![vyuh_feature_onboarding](https://img.shields.io/pub/v/vyuh_feature_onboarding.svg?label=vyuh_feature_onboarding&logo=dart&color=blue&style=for-the-badge)](https://pub.dev/packages/vyuh_feature_onboarding) |
| _NPM_ |
| [![@vyuh/sanity-schema-core](https://img.shields.io/npm/v/%40vyuh%2Fsanity-schema-core.svg?logo=npm&label=%40vyuh%2Fsanity-schema-core&style=for-the-badge&color=cb3837)](https://www.npmjs.com/package/@vyuh/sanity-schema-core) |
| [![@vyuh/sanity-schema-system](https://img.shields.io/npm/v/%40vyuh%2Fsanity-schema-system.svg?logo=npm&label=%40vyuh%2Fsanity-schema-system&style=for-the-badge&color=cb3837)](https://www.npmjs.com/package/@vyuh/sanity-schema-system) |
| [![@vyuh/sanity-plugin-structure](https://img.shields.io/npm/v/%40vyuh%2Fsanity-plugin-structure.svg?logo=npm&label=%40vyuh%2Fsanity-plugin-structure&style=for-the-badge&color=cb3837)](https://www.npmjs.com/package/@vyuh/sanity-plugin-structure) |
| [![@vyuh/sanity-schema-auth](https://img.shields.io/npm/v/%40vyuh%2Fsanity-schema-auth.svg?logo=npm&label=%40vyuh%2Fsanity-schema-auth&style=for-the-badge&color=cb3837)](https://www.npmjs.com/package/@vyuh/sanity-schema-auth) |
| [![@vyuh/sanity-schema-onboarding](https://img.shields.io/npm/v/%40vyuh%2Fsanity-schema-onboarding.svg?logo=npm&label=%40vyuh%2Fsanity-schema-onboarding&style=for-the-badge&color=cb3837)](https://www.npmjs.com/package/@vyuh/sanity-schema-onboarding) |
## Hi there! 👋
**Vyuh** is a framework to build CMS-driven Flutter Apps at scale. It gives the
**no-code** flexibility to the Business teams (via the CMS), and the
**full-code** power to the Engineering teams. This puts the right control at the
right place without any compromise.> [!NOTE]
>
> CMS is one of the many extensible integrations inside Vyuh. All integrations
> are managed as Plugins, which are standardized interfaces to extend the
> capabilities of the framework.## 🤔 Why did we build this?
A common problem when building large scale apps is the _need to stay modular_ as
you keep growing the feature set. You also want different teams to _work in
parallel_ without stepping on each other. The typical approach of creating a
single project and building all the functionality in it does not scale very well
over time. You could break up the app into several packages but that still does
not give you the clarity of who owns what. It does not tell you how to combine
these packages to create the final app.Additionally, Apps today are very content-oriented and need to be dynamic. This
means your journeys, page content, themes, etc. should be remotely controllable.
In other words, making your app _Server-driven_.### Separation of Concerns
Combining all these capabilities requires a holistic approach, which is only
possible when you build a cohesive framework.> **Vyuh** is that framework.
>
> It allows you to create the perfect balance of simple, modular components on
> the `CMS`, with powerful `Flutter` counterparts that take care of all the
> complexity.The teams (Business teams) managing the content and experience don't have to
worry about UI Design, pixel precision or performance and focus more on
_building the screen journeys and page content_ instead. The Flutter engineering
teams handle the complexity of the components along with its performance.This clear separation allows a phenomenal flexibility in building simple to
large scale apps. It also gives _the right tools to the right teams_ and makes
them more productive.> _Business_ teams **assemble** page-content and journeys, whereas the
> _Engineering_ teams focus on the **developing** the design, performance and
> scalability of those _content-blocks_. This results in a _gallery of blocks_
> which the Business teams use to create the content of the App.### The Framework
The **Vyuh** framework has some powerful built-in capabilities such as:
- [x] Building features atomically and in a modular fashion.
- [x] Features as transferable and reusable units of functionality that can be
moved between Apps.
- [x] Remote configuration of content, enabling Server-Driven UI.
- [x] Extensible Plugin-based approach to add new third-party integrations.
- [x] Team Independence.
- [x] Decentralised development.
- [x] Creating a family of apps with reusable features.
- [x] A growing set of integrations (aka building blocks) to make app
development faster.## 🔩 The Building Blocks
The core building blocks that enable all of this include:
- **Features**: build user-facing functionality in a modular, reusable, atomic
manner. Features can be composed together to create the entire app or a family
of apps. Features can also be transferred between apps easily.
- **Plugins**: All third party integrations are handled in a cross-cutting
manner using Plugins. Authentication, Networking, CMS, Storage, Permissions,
Ads, etc. are all plugins that are available to all features.
- **CMS-Driven UI**: Also known as Server-Driven UI, the entire app experience
can be driven from a CMS. This includes the screen journeys, page content,
themes, etc. The CMS itself is a standard plugin with custom Providers. Bring
your own CMS as a `ContentProvider`!> [!NOTE]
>
> The default CMS we use is [Sanity.io](https://sanity.io).- **Community packages**: leverages the best community packages like `mobx`,
`go_router`, `get_it`, `hive`, `firebase`, etc. This means you don't have to
learn anything proprietary to use Vyuh.> It is plain old Flutter with a fresh approach to building scalable apps.
## Getting Started 🚀
1. Start with the documentation on the [Docs Website](https://docs.vyuh.tech).
2. There are several examples to give you a taste of the Framework. Check them
out in the [examples](examples) directory. Some direct links to the examples
are listed below.
3. To run the Vyuh Demo, there is some setup needed. This includes API Keys for
Unsplash and TMDB. All these details are in the
[Vyuh Demo README](apps/vyuh_demo/README.md).### Examples
Counter
The classic counter example from Flutter, as a Vyuh Feature.
Theme Settings
Toggle between the light & dark themes.
Wonderous
The Wonderous App as a feature.
Movies
A Movies feature using the TMDB API.
Unsplash
Explore the photos from Unsplash
Miscellaneous
Explore the various framework capabilities in this miscellaneous feature.
Food
A fast-food menu feature
Puzzle
A fun little puzzle game, as a feature.
## Contact
Follow us, stay up to date or reach out on:
- [@vyuh_tech](https://x.com/vyuh_tech)
- [LinkedIn](https://www.linkedin.com/company/vyuh-tech)
- [Discord](https://discord.gg/b49sbjqszG)
- [Email](mailto:[email protected])## Analytics
![Alt](https://repobeats.axiom.co/api/embed/bbe1b79c2dcbd94a9b194633e368cdde06953673.svg 'Repobeats analytics image')
## Contributors
Pavan Podila
💻 📖 ⚠️
Vishal Kumar
💻
Ajay Kumar
💻 ⚠️
Stephen Richter
💻 📖 ⚠️
## License
The framework is [FSL Licensed](LICENSE).