Declarative UI
setState() reactive updates
If you know Flutter, you know nocterm
StatefulComponent • setState() • Row • Column • hot reload
setState() reactive updates
Row, Column, ListView...
Nord, Dracula, Gruvbox...
Instant code updates
testNocterm() built-in
StatefulComponent, setState(), Column, Row, Expanded, ListView — the same APIs you already know.
Component-based design with a virtual terminal. Code that's easy to read, test, and maintain.
Animations, mouse support, markdown, differential rendering, and testing — all built-in.
Real nocterm apps compiled to JavaScript, running in your browser
System monitors, server dashboards, DevOps tools with real-time metrics
IRC clients, messaging tools with auto-scroll and rich text
Todo apps, note takers, project managers with keyboard navigation
Code generators, API testers, database CLIs with rich UIs
Home automation dashboards, IoT controllers, climate monitors
Roguelikes, text adventures, puzzle games with animations
| Feature | nocterm | Bubble Tea | Ratatui | Textual | Ink | ncurses |
|---|---|---|---|---|---|---|
| Language | Dart | Go | Rust | Python | Node.js | C |
| Hot Reload | ✓ | ✗ | ✗ | ~ | ~ | ✗ |
| Declarative | ✓ | ✓ | ✗ | ✓ | ✓ | ✗ |
| Flutter-like API | ✓ | ✗ | ✗ | ✗ | ~ | ✗ |
| Testing | ✓ | ~ | ~ | ✓ | ~ | ✗ |
| Animations | ✓ | ✓ | ~ | ✓ | ~ | ✗ |
| Learning Curve | Low* | Medium | High | Medium | Low** | High |
* Zero learning curve for Flutter/Dart developers ** If you know React
Get started with nocterm in seconds
$ dart pub add nocterm