Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. scenic

scenic

Apache-2.0Elixirv0.11.1

A client application library built on Elixir/Erlang/OTP for creating cross-platform, fixed-screen IoT and portable applications.

GitHubGitHub
2.0k stars138 forks0 contributors

What is scenic?

Scenic is a client application library built directly on the Elixir/Erlang/OTP stack for creating cross-platform applications that run identically on operating systems like MacOS, Ubuntu, and Nerves/Linux. It solves the problem of building reliable, self-contained applications for fixed-screen IoT devices and portable use cases by leveraging OTP's fault-tolerance and simplicity.

Target Audience

Elixir/Erlang developers building applications for IoT devices, embedded systems, or portable applications that require consistent operation across multiple platforms without browser dependencies.

Value Proposition

Developers choose Scenic for its minimal dependencies, built-in fault tolerance via OTP supervision trees, and focus on security and maintainability, making it ideal for resource-constrained or reliability-critical environments.

Overview

Core Scenic library

Use Cases

Best For

  • Building user interfaces for IoT devices with fixed screens
  • Creating portable applications that run identically across MacOS, Ubuntu, and Nerves/Linux
  • Developing embedded systems applications with high availability requirements
  • Implementing self-contained device logic that operates independently of external services
  • Designing reusable UI components for Elixir-based applications
  • Building secure applications by avoiding browser and JavaScript vulnerabilities

Not Ideal For

  • Applications requiring 3D graphics or immersive visual experiences
  • Web development teams needing browser-based interfaces or HTML/CSS integration
  • Projects where immediate mode graphics are critical, such as certain simulations or games
  • Teams looking for a UI framework with extensive third-party libraries and mature community support

Pros & Cons

Pros

Fault-Tolerant Design

Leverages OTP supervision trees to create self-healing applications that maintain high availability under adverse conditions, as highlighted in the Goals section.

Minimal Overhead

Core dependencies are only Erlang/OTP and OpenGL, ensuring the library is small and fast with low resource usage, ideal for constrained environments.

Self-Contained Operation

Device logic runs locally, allowing applications to operate independently of external services, which is crucial for IoT reliability.

Flexible UI Matrices

Uses transform matrices similar to game development for easy positioning, scaling, and reuse of UI elements, enabling dynamic layouts.

Security-First Approach

Avoids browsers and JavaScript to reduce attack surfaces, focusing on simplicity and security in design, as noted in the Philosophy.

Cons

Breaking Changes

Version 0.11 is a major upgrade with numerous breaking changes, requiring careful migration and indicating potential instability for production use.

Limited 3D Support

Explicitly a 2D UI framework with no plans for 3D drawing, restricting its use for graphics-intensive or immersive applications.

New and Evolving

Being fairly new, the ecosystem has fewer reusable components and community resources, with strict contribution guidelines that may slow adoption.

Retained Mode Only

Does not support immediate mode graphics, which could be a limitation for real-time or performance-critical applications needing low-level control.

Frequently Asked Questions

Quick Stats

Stars2,049
Forks138
Contributors0
Open Issues23
Last commit7 months ago
CreatedSince 2018

Tags

#retained-mode#iot#elixir#otp#opengl#erlang#cross-platform#embedded-gui

Built With

E
Erlang
E
Elixir
O
OTP
O
OpenGL

Included in

Elixir13.1k
Auto-fetched 1 day ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub