/expression-ui

A framework that allows you to build UI's using animation software

Primary LanguageDart

expression ui

A alternative way to build mobile app UI on EVERY major framework (Flutter, React-Native, SwiftUI, iOS Native, and Kotlin).

What is this about?

Currently the app building process works as follows:

  1. Create or get a figma design
  2. Spend hours writing the code to render that Figma design 2a. Every developer does it different
  3. Run the app and tweak the UI as you are building it

This process is accepted, and when I spoke about it, I was told to "copy paste my old code" to move faster and I should stop complaining.

But I don't like step 2 in the process above.

What if we could go from design directly to pixels.

That's what I'm exploring with this framework.

The idea is:

  1. Design your UI on a canvas tool
  2. We render it pixel-perfect using an open-source rendering runtime

Technical research

If you're interested in helping I would appreciate that.

I'm currently doing the Flutter parts, I would love for react-native, iOS native, Android native and all of those to be developed / researched at the same time.

Please reach out on Twitter and I'll add you to our Discord if you'd like to help explore this idea.

Repo Setup

  • examples: is where the examples will go for each of the frameworks named examples-[framework]
  • packages: is where the packages will go for each of the frameworks names expression-ui-[framework]
  • resources: readme images and gifs

UI Research

These tasks are all related to the visuals and exploring how we can actually make the user interface work as expected.

  • Creating checkable boxes (up to 5) and update state in code

  • Bottom sheets (shoud be the same as normal UI)

  • Creating a long scrollable list view

  • Dynamically update text

  • Sync state with animation UI

  • Building multiple views and navigating between them

  • Building responsive UI's - PR

  • Building a design system and composing

  • Performing interactive gestures (Swipes)

  • Managing text input - Done in platform code for now

  • Works with a screen reader - Attempted but rive's single widget is making this difficult. Work in feat/screen-reader

Development Experience Research

These tasks are all related to improving the dev experience, majority of them will probably be code generation using dart cli (not the build_runner package).

The goal would be to read the rive file and use the data in there to improve the developers experience.

  • Automatic binding of click events and callbacks
  • Type safe referencing of all states, animations, events and artboards