Getting started

LvLUI is a visual UI builder for LVGL. Design your screens in the browser, then export clean, production-ready C you can drop straight into an ESP32, STM32, or any LVGL-compatible MCU. No install, no proprietary runtime.

Introduction

Everything runs locally in your browser. Your project lives on your machine until you choose to export it, and the generated code is plain LVGL — yours to read, version, and ship.

Quickstart

The fastest path from zero to running firmware is three steps:

  1. Create a project and pick your display resolution.
  2. Design your UI by dragging widgets onto the canvas.
  3. Export C code and build it with your toolchain.
Open the editor

1 · Create a project

From the dashboard, click New project. Give it a name, choose a target platform (ESP32, STM32, RP2040…) and a display resolution — for example 320×240 for a small TFT, or 800×480 for an HMI panel.

Each project can hold multiple screens. The resolution you pick sizes the canvas and is written into lv_conf.h on export.

2 · Design your UI

Drag widgets from the palette onto the canvas. Select any widget to edit its properties in the right-hand panel — position, size, colors, borders, fonts, states and animations. Changes render live, exactly as LVGL will draw them.

3 · Export C code

Open the Code view to inspect the generated files in real time. LvLUI produces a complete, compilable bundle:

  • ui.c / ui.h — screen and widget construction.
  • events.c — event callbacks with USER CODE zones that survive re-export.
  • lv_conf.h — only the widgets and fonts you actually used.
  • platformio.ini — a ready-to-build project file.

Download a single file or the whole project as a ZIP. Then wire it into your toolchain below.

Platform setup

Pick the workflow that matches your build system.

ESP-IDF
# Clone an LVGL ESP32 port and drop in your generated UI
git clone https://github.com/lvgl/lv_port_esp32
cd lv_port_esp32

# Copy the folder LvLUI exported into components/
cp -r ~/Downloads/project_lvui/ components/lvlui_ui/

idf.py build flash monitor
PlatformIO
; platformio.ini
[env:esp32dev]
platform  = espressif32
board     = esp32dev
framework = arduino
lib_deps  = lvgl/lvgl@^9.0
build_flags = -I src/ui/

; Place the exported ui/ folder under src/ and call ui_init().
Arduino
#include <lvgl.h>
#include "ui/ui.h"        // generated by LvLUI

void setup() {
  lv_init();
  // init your display + touch driver here
  ui_init();              // builds every screen you designed
}

void loop() {
  lv_timer_handler();
  delay(5);
}

Next steps