Visual UI Builder and Code Generator for Embedded Displays
PixelForge is a browser-based visual editor for designing embedded display interfaces and exporting code for common Arduino and Python display workflows. It lets you build screens visually, manage multiple layouts, preview TFT and OLED-style UIs, reuse built-in templates, and generate starter code for several embedded targets from the same project data.
- Visual drag-and-drop UI builder for embedded displays
- Multi-screen project workflow
- TFT and OLED-oriented preview modes
- Built-in UI examples/templates for fast prototyping
- Basic shapes, text, labels, buttons, cards, headers, progress bars, sliders, toggles, images, and icons
- Code generation for multiple embedded targets
- JSON project export/import for saving and reloading designs
- Light and dark theme support
- Embedded helper tools for image conversion and animation workflows
- Arduino C++ / TFT_eSPI
- Arduino C++ / U8g2
- ESP32 Arduino using TFT_eSPI-style output
- PlatformIO Project export for ESP32 + Arduino + TFT_eSPI
- MicroPython with basic/experimental support
- CircuitPython with basic/experimental support
Notes:
- TFT_eSPI and U8g2 are the most complete generator targets.
- MicroPython and CircuitPython currently focus on basic shapes, text, and simple UI structures.
- Unsupported elements in the Python targets are emitted as safe comments instead of breaking output.
PixelForge currently includes ready-made examples such as:
- Simple Menu
- Dashboard
- Media Player
- Settings Panel
- Now Playing Card
- Two Cards
- Login
- Boot Screen
- Battery Monitor
- Weather Display
- IoT Device Status
- OLED Status
- OLED Menu
- OLED Now Playing
- OLED Sensors
- OLED Dialog
- OLED WiFi
- Light theme is the default on first launch.
- Dark theme is available from the built-in theme toggle.
- If a user has already selected a theme, that saved preference is reused.
PixelForge is a static web app. No build step is required.
Option 1:
- Open
index.htmldirectly in a browser.
Option 2:
- Serve the folder locally for the best compatibility with browser asset loading:
python -m http.server 8000Then open:
http://localhost:8000/
Using a local server is recommended for image/icon workflows and embedded tool integration.
- Open PixelForge in your browser.
- Set the display width, height, driver, and code target.
- Add elements from the sidebar or insert a built-in template.
- Select elements to edit position, size, text, colors, values, and driver-specific properties.
- Switch between screens from the screen controls.
- Review the generated code in the code panel.
- Use the code target dropdown to choose the output format.
- Use the
Copybutton to copy the generated code. - When
PlatformIO Projectis selected, PixelForge can also generate a ZIP package containing:platformio.inisrc/main.cppREADME.md
PixelForge supports project save/load through JSON:
Export JSONsaves the current project stateImport JSONrestores a previously exported project
This includes screens, elements, display settings, code target, and other editor state used by the app.
.
├── app.js
├── index.html
├── style.css
├── icons/
├── screenshots/
├── scripts/
└── tools/
├── bitcanvas-studio/
├── pixelforge/
└── theme.css
- Improve MicroPython generator coverage
- Improve CircuitPython generator coverage
- Expand template library
- Add broader display driver presets
- Improve export packaging and code organization
- Continue polishing preview/code parity
Issues, suggestions, and pull requests are welcome.
If you contribute:
- keep UI/editor behavior stable unless a change is clearly intentional
- avoid breaking existing TFT_eSPI and U8g2 output
- keep generated code paths safe for unsupported elements
This project is released under the MIT License. See LICENSE.
Created by Vinod Prabhashvara.