A client application library built on Elixir/Erlang/OTP for creating cross-platform, fixed-screen IoT and portable applications.
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.
Elixir/Erlang developers building applications for IoT devices, embedded systems, or portable applications that require consistent operation across multiple platforms without browser dependencies.
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.
Core Scenic library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages OTP supervision trees to create self-healing applications that maintain high availability under adverse conditions, as highlighted in the Goals section.
Core dependencies are only Erlang/OTP and OpenGL, ensuring the library is small and fast with low resource usage, ideal for constrained environments.
Device logic runs locally, allowing applications to operate independently of external services, which is crucial for IoT reliability.
Uses transform matrices similar to game development for easy positioning, scaling, and reuse of UI elements, enabling dynamic layouts.
Avoids browsers and JavaScript to reduce attack surfaces, focusing on simplicity and security in design, as noted in the Philosophy.
Version 0.11 is a major upgrade with numerous breaking changes, requiring careful migration and indicating potential instability for production use.
Explicitly a 2D UI framework with no plans for 3D drawing, restricting its use for graphics-intensive or immersive applications.
Being fairly new, the ecosystem has fewer reusable components and community resources, with strict contribution guidelines that may slow adoption.
Does not support immediate mode graphics, which could be a limitation for real-time or performance-critical applications needing low-level control.