TAAFT
Free mode
100% free
Freemium
Free Trial
Deals

๐ŸŽจ DisplayKit

cifertech / DisplayKit

A visual UI builder for TFT_eSPI & U8g2 displays. design your interface, export working Arduino code.

65 10 Language: JavaScript License: GPL-3.0 Updated: 3mo ago

README

cifertech - DisplayKit ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/cifertech/DisplayKit/total) stars - DisplayKit forks - DisplayKit

TWITTER ยท INSTAGRAM ยท YOUTUBE ยท WEBSITE

<br />

๐ŸŽจ DisplayKit

DisplayKit is a modern web-based drag-and-drop UI designer for embedded display development.

Design screens visually โ†’ generate clean Arduino drawing code โ†’ run it on boards like ESP32 / ESP8266 / STM32 / Arduino / RP2040 (and more).

Quick start

  • Use it online: click the GitHub Pages link in the repository, or open: https://cifertech.github.io/DisplayKit/

How to use

  • Pick display driver: choose TFT_eSPI or U8g2 OLED from the sidebar (and set your display resolution)
  • Create screens: add as many as you like and name the generated function (e.g. drawHomeScreen)
  • Add elements: click an element type to add it, then drag / resize and edit properties
  • Export:
    • Copy the generated code from โ€œGenerated Code (TFT_eSPI / U8g2)โ€
    • Export JSON to save a project snapshot (great for versioning)
    • Import JSON to restore a saved project

Built-in tools

DisplayKit includes tool pages under tools/ and can open them inside the app overlay:

  • PixelForge (tools/pixelforge/): image converter (generate RGB565 headers and import into DisplayKit)
  • BitCanvas Studio (tools/bitcanvas-studio/): animation tool (export and copy to clipboard)
  • Shared tool theming: tools/theme.css keeps tool pages visually consistent with DisplayKit

Keyboard shortcuts

  • Undo / Redo: Ctrl/Cmd + Z / Ctrl/Cmd + Shift + Z
  • Duplicate: Ctrl/Cmd + D
  • Cycle selection: Tab / Shift + Tab
  • Align selected: Ctrl/Cmd + 1..6 (left / center / right / top / middle / bottom)
  • Move selected: Arrow keys (hold Shift for bigger steps)
  • Delete selected: Delete / Backspace
  • Close Tools overlay: Esc

๐Ÿš€ Features

๐Ÿ–ฅ Multi-screen UI builder

  • Create multiple screens and switch between them
  • Auto-generates a draw function per screen (e.g. drawHomeScreen())
  • Per-screen element lists (clear/reset a single screen without touching others)

๐Ÿ–ฅ Display driver modes

  • TFT_eSPI mode: full-color UI preview + Arduino code generation
  • U8g2 OLED mode: OLED-style preview + U8g2 code generation
  • Built-in display settings:
    • TFT: rotation (plus UI options for color depth / backlight / touch metadata)
    • OLED: preset constructors (I2C/SPI), rotation, contrast, flip mode, font mode, power save

๐Ÿงฑ Drag-and-drop elements

  • Shapes: Rect, RoundRect, Circle, Line, Divider
  • UI: Label, Button, Header, Card
  • Controls: Progress, Slider, Toggle
  • Images:
    • Import PNG/JPG into the canvas (stored internally as RGB565 for TFT workflows)
    • Preview images inside the editor

๐Ÿงฐ Editor workflow & productivity

  • Undo / Redo history
  • Duplicate elements
  • Resize handles (most elements) + drag to position
  • Snap-to-grid + configurable grid size
  • Zoom (50โ€“200%)
  • Background presets + custom background color
  • JSON project Export / Import

๐Ÿงฉ Built-in tools (inside the app)

  • PixelForge (image converter) and BitCanvas Studio (animation) can open in an in-app overlay
  • Theme sync between DisplayKit and embedded tools (light/dark)

โš™ Code output

TFT_eSPI

  • Generates: fillRect, fillRoundRect / drawRoundRect, fillCircle, drawLine, text primitives, etc.
  • Optional TFT_eSprite rendering (Use sprite toggle)
  • RGB565 image arrays in PROGMEM + pushImage()

U8g2

  • Generates: drawBox, drawRBox / frames, drawDisc / circles, drawLine, etc.
  • Font selection per text element + emits u8g2.setFont(...)
  • Note: image elements are currently not emitted in the U8g2 sample code output

๐Ÿ”Œ Actions & navigation hooks

  • Elements can be assigned an โ€œOn click โ†’ Go to screenโ€ฆโ€ action in the editor
  • Code output keeps drawing code focused; touch/click wiring is left for you to implement in your input loop

&nbsp;

๐Ÿ›  Compatibility

Display Library Status Notes
TFT_eSPI โœ… Full RGB565, sprites, images, colors
U8g2 โœ… Full Monochrome + full font system
Adafruit_GFX โš  Planned Not implemented yet

Project structure

.
โ”œโ”€ index.html        # Main app UI
โ”œโ”€ style.css         # Main app styling
โ”œโ”€ app.js            # App logic (editor + code generation)
โ””โ”€ tools/
   โ”œโ”€ pixelforge/       # Image converter tool
   โ”œโ”€ bitcanvas-studio/ # Animation tool
   โ””โ”€ theme.css         # Shared theme tokens for tool pages

๐Ÿค Contribute

Want to help make DisplayKit better?

  • Submit bug reports
  • Suggest new features
  • Improve documentation
  • Contribute code or UI elements
  • Star โญ and share the project

Every contribution helps. Thank you! โค๏ธ

0 AIs selected
Clear selection
#
Name
Task