• Stars
    star
    1,751
  • Rank 26,595 (Top 0.6 %)
  • Language
    Elixir
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Core Scenic library

Core Scenic Library

Codecov

Scenic is a client application library written directly on the Elixir/Erlang/OTP stack. With it you can build applications that operate identically across all supported operating systems, including MacOS, Ubuntu, Nerves/Linux, and more.

Scenic is primarily aimed at fixed screen connected devices (IoT), but can also be used to build portable applications.

See the getting started guide and the online documentation for more information. Other resources available are:

  • Introducing Scenic, a video from ElixirConf 2018, which introduces Scenic and the problems it strives to solve.

Warning Version 0.11 is a MAJOR upgrade!

There are numerous breaking changes. Please read the version 0.11 upgrade guide for details about how to upgrade your application to 0.11.

Goals

  • Available: Scenic takes full advantage of OTP supervision trees to create applications that are fault-tolerant, self-healing, and highly available under adverse conditions.

  • Small and Fast: The only core dependencies are Erlang/OTP and OpenGL.

  • Self Contained: "Never trust a device if you don't know where it keeps its brain." The logic to run a device should be on the device and it should remain operational even if the service it talks to becomes unavailable.

  • Maintainable: Each device knows how to run itself. This lets teams focus on new products and only updating the old ones as the business needs.

  • Remotable: Scenic devices know how to run themselves, but can still be accessed remotely. Remote traffic attempts to be as small as possible so it can be used over the Internet, cellular modems, Bluetooth, etc. This is actively under development and coming soon.

  • Reusable: Collections of UI can be packaged up for reuse with, and across applications. I expect to see Hex packages of controls, graphs, and more available for Scenic applications.

  • Flexible: Scenic uses matrices similar to game development to position everything. This makes reuse, scale, positioning and more very flexible and simple.

  • Secure: Scenic is designed with an eye towards security. For now, the main effort is to keep it simple. No browser, Javascript, and other complexity presenting vulnerabilities. There will be much more to say about security later.

Non-Goals

  • Browser: Scenic is not a web browser. It is aimed at a fixed screen devices and certain types of windowed apps. It knows nothing about HTML.

  • 3D: Scenic is a 2D UI framework. It uses techniques from game development (such as transform matrices), but it does not support 3D drawing at this time.

  • Immediate Mode: In graphics speak, Scenic is a retained mode system. If you need immediate mode, then Scenic isn't for you. If you don't know what retained and immediate modes are, then you are probably just fine. For reference: HTML is a retained mode model.

Contributing

We appreciate any contribution to Scenic.

However, please understand that Scenic is still fairly new and as such, we'll be keeping an extra-close eye on changes.

Check the Code of Conduct and Contributing Guides for more information. We usually keep a list of features and bugs in the issue tracker.

The easiest way to contribute is to help fill out the documentation. Please see the Contributing Guides first.

More Repositories

1

phoenix_integration

Lightweight server side integration test tools for Phoenix
Elixir
219
star
2

policy_wonk

Elixir authorization and resource loading in Plug form for Phoenix
Elixir
182
star
3

scenic_new

mix scenic.new task for Scenic apps
Elixir
116
star
4

phoenix_markdown

Phoenix Template Engine for Markdown
Elixir
82
star
5

scenic_driver_glfw

Scenic render and input driver for windowed OSs
C
26
star
6

scenic_driver_nerves_rpi

Scenic render-only driver for the Raspberry Pi under Nerves
C
22
star
7

scenic_driver_nerves_touch

Scenic.Driver.Nerves.Rpi - Scenic driver providing touch input for Nerves devices
Elixir
18
star
8

scenic_math

Math library supporting Scenic
Elixir
15
star
9

scenic_sensor

A combo PubSub and Data cache that sits between sensors and scenes. Can be used outside of Scenic applications
Elixir
14
star
10

adept_modal

LiveView modal dialog component using Tailwind and Alpine js
Elixir
8
star
11

inline_svg

A simple and fast in-line SVG library and renderer for web applications
Elixir
7
star
12

font_metrics

Work with graphical font metrics and strings. Intended for use with, but doesn't require, Scenic
Elixir
5
star
13

scenic_clock

Clock packaged as components up for use in Scenic applications
Elixir
4
star
14

truetype_metrics

Extracts metadata from TrueType fonts and compiles terms for use with font_metrics
Elixir
3
star
15

nerves_scenic_test_app

Work in progress test app for scenic and nerves together. Not intended for production use.
Elixir
2
star
16

presentations

Decks and other information from my various presentations
1
star
17

sinatra-starter

Starter Sinatra site using sprockets, compass, bootstrap-sass, markdown, partials, jquery, more
Ruby
1
star