• Stars
    star
    362
  • Rank 117,671 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 5 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Quant-UX standalone

Luisa - Framework (former vue-low-code)

The Luisa framework is an open-source project that turns Figma and Quant-UX designs into fully functional VUE3 applications. By ensuring that the design stays the single source of truth, Vue-Low-Code reduces the need for design hand-offs and front-end code significantly.

Documentation

You can find the documentation at Luisa.cloud.

Examples-And-Links

Contact-and-Support

If you want to reach out please use the Contact page or Discord

Minimal documentation (Deprecated!)

The handoff problem

A constant pain point during the development of an application is the hand-off between the design and the development team. Often this process is not frictionless. The design team creates a set of graphics and prototypes, which serve as the source of truth and specification for the development team. The development team implements the visual design in the desired technology, which includes the translation of the design into front-end code and business logic, as well as the wiring between the two. As the development evolves, the implementation becomes a second source of truth, and keeping the design and the code base in sync can be a painful exercise.

Solution

The core of the solution is the Luisa component which reads the visual design and creates the front-end automatically on the fly. As a result, changes in the design are immediately updated in the application. The wiring between the front-end component and the business logic is achieved through method and data binding, which is defined in a Figma plugin or a dedicated view in Quant-UX.

As a result, Developers can focus on business logic and backend connectivity, while the design team can iterate fast through different ideas, without impacting the development team.

Luisa architecture

In summary, the Luisaproject provides the following benfefits:

  1. Zero Code rendering of visual design and animations
  2. Clear separation of UI and business logic
  3. Developers can focus on code
  4. Developers can use the tools and frameworks of their choice.
  5. Designers can use the powerful visual design tool
  6. Easy extension with custom callback functions
  7. Full support of VUE data binding.
  8. Extension with custom components
  9. Extension with custom CSS
  10. Rich library of stylable components.

More information can be found here

Guide

Table of contents

  1. Installation
  2. Register Luisa to Vue
  3. Defintion of Bindings in Quant-UX
  4. Responsive Rendering
  5. Low Code Workflow
  6. Example & Links
  7. Development Setup
  8. Contact & Support

How to install Luisa

First, you have to install the Luisa package via NPM

npm i luisa-vue@3

Register Luisa to Vue

In the full mode the or component are used to render the entire front end. The first step is top register these components in Vue. The following section will use Quant-UX design as an example. For Figma, please check the Figma-Low-Code repo.

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import luisa from 'luisa-vue'

const app = createApp(App)
app.use(router).mount('#app')
app.use(luisa)

Place the QUX component.

Now you can start including the component, for instance in your home components. You have to pass your Quant-UX prototype to the component, so it knows what to render. You can either pass a javascrit object or a share key

<Luisa :design="app"/>

You can optain the share key from the http://quant-ux.com website by clicking share in the canvas menu. In general the share key is best for development. Updates in Quant-UX will be immediatly visible after a page reload. However, for production you should pass an app object. You can download the app json with the luisa command line interface:

npm install luisa-util

Now you can call quant-ux on the command line. Please pass the share key and select download. The json file will be loaded and all images will be stored in the public folder

npm run download

Please note that home component should be wrapped by a router-view, otherwise navigation will not work. If you use VUE-CLI to bootrap the project, everything will be configured out of the box.

 <div id="app">
    <router-view/>
  </div>

Update Router

Last, you have to update your router to delegate all routes to home.

const routes = [
  {
    path: '/',
    name: 'home',
    component: () => import(/* webpackChunkName: "about" */ '../views/Home.vue')
  },
  {
    path: '/:screenName.html',
    name: 'qux',
    component: () => import(/* webpackChunkName: "about" */ '../views/Home.vue')
  }
]

The default paramter QUX will look for is 'screenName'.

Configure luisa

You can configure certain parameters, e.g. the routing rules. To do so, pass a config object to the qux component.

<QUX :design="app" :config="config"/>

The config object can have the following properties and hsould be defined in the data section of the home component.

    config: {
        css: {
          grid: true, // Use CSS grid to align objects. False will use CSS-Flex.
          justifyContentInWrapper: true // In justifz or left align content in wrapped elements
        },
        router: {
          key: 'id', // alternative routing parameter
          prefix: 'qux' // path prefix that will be used when rendering links
        }
    }

Data Binding

QUX-LowCode supports VUE data binding. You have to pass a v-model to the QUX component. The databindings for the widgets must be defined in the Quant-UX canvas.

<Luisa :design="app" v-model="view-model"/>

Method Binding

In the Quant-UX canvas you can define javascript callbacks for the widgets. Place the methods in the parent compoent of QUX. The method will have the following signature:

myMethod (value, element, e) {
 ...
}

If a method returns a string, matching a screen name, the QUX will navigate to this screen.

myMethod (value, element, e) {
 ...
 // navigate to screen 2
 return 'Screen2'
}

Custom components and rendering

Sometimes you want to render a certain part of the UI by your self, or replace existing widgets with custom implementations. These components will be used at the specified screen location instead of the default QUX component. This approach allows you to fully manage certain parts of the UI. Data is passed as a value property and follows default VUE practices.

<Luisa :design="app" :config="config"/>
...

import MyWidget from 'src/myWidget'

...

config = {
    components: {
      'myCustomComponent': MyWidget
    }
}

You can set the name of the custom component in the data view in Quant-UX.

Selecting sub areas of the prototype

Sometimes you might not want to render the entire prototype, but just a small subsection, e.g. a dialog. You can do this by using the 'selected' property. Enter the name of the component to show. Please make sure, that the name is unique. You can also use several instances if the QUX component in your template.

    <Luisa
      :design="app"
      :config="config"
      v-model="viewModel"
      selected="LoginBox"
      />


    <Luisa
      :design="app"
      :config="config"
      v-model="viewModel"
      selected="SignupBox"
      />

MDI Icons

If you are using the Quant-UX icons components, you have to install the mdi-font package.

npm install @mdi/font

Afterwards import the icons in the App.vue

import '@mdi/font/css/materialdesignicons.css'

Define data binding and callbacks.

You can define the data binding and the callbacks in the normal Quant-UX designer. Before you start, you have to enable the Beta features. To do so:

  1. Login at http://www.quant-ux.com
  2. Open the prototype
  3. Click on the menu and select "Settings"
  4. Select "Enable Beta Features"
  5. In the upper right corner you can now toggle between "Design" and "Data & Code" view

Open the settings and tick the beta feature checkbox

To set the code properties perform the following steps:

  1. Click on "Data & Code" in the upper right corner
  2. The canvas will turn gray now.
  3. Select a widget.
  4. In the properties panel you can now define method name to be called.
  5. If the widet supports data binding, you can also configure the data binding variable here. Please note, that Quant-UX supports JSON Path, so a variable name can be "person.name"

Open the settings and tick the beta feature checkbox

Responsive Rendering

Vue-Low-Code apps are to some degree responsive, depending on the constraints that affre defined in Quant-UX or Figma. In addtion you can define min and max widths, and determine the flow of child components (Grid vs Flex).

However, sometimes this is not enough and one needs different UIs for different devices. Vue-Low-Code allows you to specify for each device type a different app. By doing this, you have to complete freedom to design for each device type, without worrying too much about the responsive behavior. Also, this approahc allows you to provide completly different navigation patters, e.g. a hamburger menu on mobile and a central navbar on desktop.

To enable the responsive behavior do:

<Luisa :design="apps"/>

...
let apps = {
    mobile: <key or object>,
    tablet: <key or object>
    desktop: <key or object>
}

You can pass weather the share key or the downloaded app json. Again, the share key is great for development, but for production you should download the artifacts.

Low Code Workflow

We envision the following workflow to enable painless collaboration between designers and developers:

The QUX low code workflow

  1. The designer creates an initial design in Quant-UX or Figma
  2. The developer adds data binding and method callbacks in Quant-UX using a dedicated view or the Figma Plugin
  3. The developer sets up a new project (Vue.js for now) and includes the QUX (or Figma) component
  4. The developer loads the design from Quant-UX and creates the required methods and fills them with business logic.
  5. The QUX component renders the design and invokes the callbacks in clicks.
  6. Changes in the design are transparent to the developer, he just reloads the design from Quant-UX.

Dev Setup

For fixes and improvements please clone the repository and submit pull requests.

npm install

Build:

npm run export

More Repositories

1

quant-ux

Quant-UX - Prototype, Test and Learn
Vue
1,918
star
2

figma-low-code

A repository to bootstrap Figma low code projects
JavaScript
676
star
3

quant-ux-cli

Turn your prototypes into VUE code
JavaScript
43
star
4

qux-java

Quant-UX Java Backend
JavaScript
27
star
5

rememberli

Simple and elegant note taking app
Vue
14
star
6

react-native-low-code

Low Code for react native
JavaScript
12
star
7

figma-design-system-example

Template repository for Figma Designlets
Vue
12
star
8

luisa-vue3-starter

Template project for Luisa running on Vue3
JavaScript
10
star
9

figma-low-code-todo

Example of todo app created with Figma Low Code
JavaScript
9
star
10

qux-low-code-example

Example for Quant-UX standalone
Vue
5
star
11

quant-ux-websocket

WebSocket server for Quant-UX to enable realtime collaboration
TypeScript
3
star
12

luisa-custom-component

Sample showing how to use custom components with the Luisa low code framework
Vue
2
star
13

outlier-experiements

2
star
14

react-low-code

Low Code component for React
JavaScript
2
star
15

quantux-whisper

2
star
16

feup-node-lecture-2021

TypeScript
1
star
17

luisa-vue2-starter

Example how to use vue-low-cde
JavaScript
1
star
18

cinematic-scroll

JavaScript
1
star
19

qux-flow

Quant-UX Flow Editor - Graph Editor Framework for Vue.js
JavaScript
1
star
20

pwa-playground

Vue
1
star
21

luisa-util

Luisa Utils
JavaScript
1
star
22

vue3-low-code-example

Example for using vue-low-code with Vue3
Vue
1
star
23

quant-ux-electron

Quant-UX is design to create visual prototypes and low code
1
star
24

figma-low-code-plugin

The source of the Figma plugin for Low Code and the Luisa framework
CSS
1
star