Raxol is a production-ready, high-performance terminal application framework that brings modern UI development patterns to the terminal.
Think React, Svelte, LiveView meets tmux, or Next.js for the terminal. Choose your preferred UI paradigm, with free enterprise features built-in.
Metric | Performance | Industry Standard |
---|---|---|
Parser Speed | 3.3μs/op | 100μs/op |
Memory Usage | 2.8MB/session | 10MB/session |
Startup Time | <10ms | 100ms |
Test Coverage | 100% | 80% |
Render Speed | 1.3μs | 10μs |
# Add to mix.exs
def deps do
[
{:raxol, "~> 1.0.1"}
]
end
# Clone and explore
git clone https://github.com/Hydepwns/raxol.git
cd raxol
mix deps.get
# Interactive tutorial (5 minutes)
mix raxol.tutorial
# Component playground
mix raxol.playground
# Run tests (100% passing!)
mix test
Use whatever you're comfortable with: ```bash use Raxol.UI, framework: :react # Familiar React patterns use Raxol.UI, framework: :svelte # Reactive with compile-time optimization use Raxol.UI, framework: :liveview # Phoenix LiveView patterns use Raxol.UI, framework: :heex # Phoenix templates use Raxol.UI, framework: :raw # Direct terminal control
#Universal Features (Work Across ALL Frameworks)
┌─────────────┬──────────────┬─────────────────┬──────────────┬───────────┐ │ Framework │ Paradigm │ Best For │ Learning Curve │ ├─────────────┼──────────────┼─────────────────┼──────────┼───────────────┤ │ React │ Virtual DOM │ Familiar APIs │ Easy │ │ Svelte │ Reactive │ Performance │ Medium │ │ LiveView │ Server-side │ Real-time apps │ Easy │ │ HEEx │ Templates │ Simple UIs │ Very Easy │ │ Raw │ Direct │ Maximum control │ Hard │ └─────────────┴──────────────┴─────────────────┴──────────────┴───────────┘
#### React-Style
```elixir
defmodule MyApp do
use Raxol.Component
def render(assigns) do
~H"""
<Box padding={2}>
<Text color="green" bold>Hello, Raxol!</Text>
<Button on_click={@on_click}>Click me!</Button>
</Box>
"""
end
end
defmodule MyApp do
use Raxol.Svelte.Component
state :count, 0
reactive :doubled, do: @count * 2
def render(assigns) do
~H"""
<Box padding={2} use:tooltip="Reactive component">
<Text>Count: {@count} Doubled: {@doubled}</Text>
<Button on_click={&increment/0} in:scale>+1</Button>
</Box>
"""
end
end
defmodule MyApp do
use Raxol.LiveView
def mount(_params, _session, socket) do
{:ok, assign(socket, count: 0)}
end
def render(assigns) do
~H"""
<Box padding={2}>
<Text>Count: {@count}</Text>
<Button phx-click="increment">+1</Button>
</Box>
"""
end
end
┌──────────────────────────────────────────────────────────┐
│ Applications │
│ (TUI Apps • Plugins • Extensions) │
├──────────────────────────────────────────────────────────┤
│ Multi-Framework UI Layer │
│ React • Svelte • LiveView • HEEx • Raw │
│ (Universal: Actions • Slots • Context) │
├──────────────────────────────────────────────────────────┤
│ Session Continuity Layer │
│ (WASH Bridge • State Sync • Collaboration) │
├──────────────────────────────────────────────────────────┤
│ Terminal Emulator Core │
│ (Parser • Buffer • Input • Rendering) │
├──────────────────────────────────────────────────────────┤
│ Platform Services │
│ (Security • Metrics • Persistence • Plugins) │
└──────────────────────────────────────────────────────────┘
mix raxol.tutorial
mix raxol.playground
Install our VSCode extension for the best development experience:
code --install-extension raxol-1.0.1.vsix
Features:
MIT License - see LICENSE.md
Ready to build the future of terminal applications?