Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Edda

Design terminal interfaces visually, then export them to real code.

Edda is a visual designer for command-line output and full-screen terminal user interfaces. Build layouts from terminal-native components, preview them at different widths, bind them to mock data, or describe what you want and let an AI provider generate a starting point.

When the design is ready, Edda can export the layout as plain text, Markdown, JSON, or starter code for popular TUI frameworks.

Edda is currently under active development. Expect sharp edges, changing APIs, and the occasional terminal-shaped gremlin.

What Edda does

Terminal interfaces are usually designed in the same place they are implemented: directly in code. That works, but makes experimentation unnecessarily slow.

Edda separates designing the interface from wiring up the application.

  • Visually compose CLI output and full-screen TUIs
  • Drag terminal-native components into a canvas
  • Inspect nodes and manage layout structure through a layer tree
  • Design themes and terminal colour palettes
  • Preview layouts at narrow, standard, and wide terminal widths
  • Bind components to realistic mock data
  • Generate editable layouts from natural-language prompts
  • Export designs to text, Markdown, JSON, or framework scaffolds

Two design modes

CLI Output

For commands that print structured information and exit: deployment summaries, status commands, diagnostics, reports, installers, and similar output.

CLI layouts are designed as clean, linear terminal documents rather than pretending every command needs to become a dashboard.

Fullscreen TUI

For persistent terminal applications with panels, navigation, status areas, tables, keyboard hints, and other application-style UI.

Components

Edda's layout model includes text, headings, rows, columns, boxes, split panes, dividers, spacers, fills, badges, keyboard hints, tables, lists, progress bars, status indicators, ASCII blocks, and data-driven collections.

Components can be selected, duplicated, reordered, removed, and edited through the inspector.

Responsive terminal preview

A terminal is not a browser wearing black clothes. Width still matters.

Edda renders designs against an explicit column count and includes quick previews for common widths:

  • 40 columns for narrow terminals and SSH sessions
  • 80 columns for the traditional terminal baseline
  • 120 columns for wider layouts
  • Custom widths up to 160 columns

This makes it easier to catch layouts that look excellent on your machine and immediately collapse into decorative rubble somewhere else.

Mock data and bindings

Design dynamic interfaces without connecting a real backend first.

Edda supports mock JSON data and simple bindings inside layouts:

Environment: {{deployment.env}}
Server:      {{server.name}}

Widgets can bind directly to values as well, including progress values and status states. Collections can render repeated layouts from arrays in the mock data.

AI-assisted layout generation

Edda can generate editable CLI and TUI layouts from natural-language descriptions.

Supported providers currently include:

  • Ollama for local models
  • Anthropic
  • OpenAI

Provider and model settings are configured inside Edda. Generated layouts use the same node model as manually created designs, so the result remains editable rather than becoming a mysterious AI screenshot you can only stare at.

If generation fails, Edda falls back to a built-in matching preset instead of leaving the canvas empty. AI is optional; the visual editor works without it.

Export

Edda can export designs as:

  • ANSI-style previews
  • Plain text
  • Markdown
  • Edda JSON
  • Framework starter code

Framework scaffolds

Framework Language
Textual Python
Ratatui Rust
Bubble Tea Go
Ink React / JavaScript

Generated code is intended as a scaffold for implementation, not a magical one-click replacement for application logic. Humanity has suffered enough from generators claiming otherwise.

Getting started

Edda uses Bun for development.

git clone https://github.com/vardirhq/edda.git
cd edda
bun install
bun run dev

Then open the local development URL printed by Bun.

Useful commands

bun run dev        # development server with hot reload
bun run build      # production build
bun run start      # run the app
bun run typecheck  # TypeScript checks
bun test           # test suite
bun run lint       # Biome checks
bun run format     # format with Biome

Tech stack

  • React 18
  • TypeScript
  • Bun
  • Biome

The terminal renderer, layout model, exporters, bindings, and framework generators live in the project itself.

Project status

Edda is an early-stage project being actively shaped around one idea:

Terminal interfaces deserve a proper design tool.

The current application already covers visual composition, CLI/TUI modes, responsive previews, themes, mock data, AI generation, and multiple export targets. The next stages are about making those pieces deeper and turning exported designs into increasingly useful implementation starting points.

Contributing

Issues, experiments, and pull requests are welcome while Edda is taking shape.

If you are proposing a feature, keep the core goal in mind: Edda should make terminal interface design faster and clearer without turning into a general-purpose GUI builder that happens to use monospace fonts.

License

No license has been added to the repository yet. Until one is chosen, normal copyright restrictions apply.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages