{"id":13508260,"url":"https://github.com/ScenicFramework/scenic","last_synced_at":"2025-03-30T10:30:48.467Z","repository":{"id":37270557,"uuid":"131665090","full_name":"ScenicFramework/scenic","owner":"ScenicFramework","description":"Core Scenic library","archived":false,"fork":false,"pushed_at":"2025-03-03T15:29:02.000Z","size":3175,"stargazers_count":2009,"open_issues_count":26,"forks_count":131,"subscribers_count":71,"default_branch":"main","last_synced_at":"2025-03-29T09:05:43.351Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ScenicFramework.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-01T01:37:59.000Z","updated_at":"2025-03-18T11:28:17.000Z","dependencies_parsed_at":"2024-05-01T16:19:55.692Z","dependency_job_id":"ac2a0d13-e850-41f0-8db4-ba0895e08690","html_url":"https://github.com/ScenicFramework/scenic","commit_stats":{"total_commits":1573,"total_committers":68,"mean_commits":23.13235294117647,"dds":"0.25874125874125875","last_synced_commit":"910d97ed5b850cdbe986ebb86c02045c13bb69a0"},"previous_names":["boydm/scenic"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScenicFramework%2Fscenic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScenicFramework%2Fscenic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScenicFramework%2Fscenic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScenicFramework%2Fscenic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ScenicFramework","download_url":"https://codeload.github.com/ScenicFramework/scenic/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246162143,"owners_count":20733357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T02:00:50.507Z","updated_at":"2025-03-30T10:30:47.445Z","avatar_url":"https://github.com/ScenicFramework.png","language":"Elixir","funding_links":[],"categories":["GUI","Elixir"],"sub_categories":[],"readme":"# Core Scenic Library\n\nScenic is a client application library written directly on the\nElixir/Erlang/OTP stack. With it you can build applications that operate\nidentically across all supported operating systems, including MacOS, Ubuntu,\nNerves/Linux, and more.\n\nScenic is primarily aimed at fixed screen connected devices (IoT), but can also\nbe used to build portable applications.\n\nSee the [getting started guide](https://hexdocs.pm/scenic/getting_started.html) and the [online documentation](https://hexdocs.pm/scenic/) for more information. Other resources available are:\n\n- [Introducing Scenic](https://www.youtube.com/watch?v=1QNxLNMq3Uw), a video from ElixirConf 2018, which introduces Scenic and the problems it strives to solve.\n\n\u003e **Warning** Version 0.11 is a **MAJOR** upgrade!\n\u003e\n\u003e There are numerous breaking changes. Please read the [version 0.11 upgrade\n\u003e guide](./guides/upgrading_to_v0.11.md) for details about how to upgrade your\n\u003e application to 0.11.\n\n## Goals\n\n- **Available:** Scenic takes full advantage of OTP supervision trees to create\n  applications that are fault-tolerant, self-healing, and highly available under\n  adverse conditions.\n\n- **Small and Fast:** The only core dependencies are Erlang/OTP and OpenGL.\n\n- **Self Contained:** \"Never trust a device if you don't know where it keeps its\n  brain.\" The logic to run a device should be on the device and it should remain\n  operational even if the service it talks to becomes unavailable.\n\n- **Maintainable:** Each device knows how to run itself. This lets teams focus\n  on new products and only updating the old ones as the business needs.\n\n- **Remotable:** Scenic devices know how to run themselves, but can still be\n  accessed remotely. Remote traffic attempts to be as small as possible so it\n  can be used over the Internet, cellular modems, Bluetooth, etc. This is\n  actively under development and coming soon.\n\n- **Reusable:** Collections of UI can be packaged up for reuse with, and across\n  applications. I expect to see Hex packages of controls, graphs, and more\n  available for Scenic applications.\n\n- **Flexible:** Scenic uses matrices similar to game development to position\n  everything. This makes reuse, scale, positioning and more very flexible and\n  simple.\n\n- **Secure:** Scenic is designed with an eye towards security. For now, the main\n  effort is to keep it simple. No browser, Javascript, and other complexity\n  presenting vulnerabilities. There will be much more to say about security\n  later.\n\n## Non-Goals\n\n- **Browser:** Scenic is **not** a web browser. It is aimed at a fixed screen\n  devices and certain types of windowed apps. It knows nothing about HTML.\n\n- **3D:** Scenic is a 2D UI framework. It uses techniques from game development\n  (such as transform matrices), but it does not support 3D drawing at this time.\n\n- **Immediate Mode:** In graphics speak, Scenic is a retained mode system. If\n  you need immediate mode, then Scenic isn't for you. If you don't know what\n  retained and immediate modes are, then you are probably just fine. For\n  reference: HTML is a retained mode model.\n\n\n\n## Contributing\n\nWe appreciate any contribution to Scenic.\n\nHowever, please understand that Scenic is still fairly new and as such, we'll be\nkeeping an extra-close eye on changes.\n\nCheck the [Code of Conduct](.github/CODE_OF_CONDUCT.md) and [Contributing\nGuides](.github/CONTRIBUTING.md) for more information. We usually keep a list of\nfeatures and bugs in the issue tracker.\n\nThe easiest way to contribute is to help fill out the documentation. Please see\nthe [Contributing Guides](.github/CONTRIBUTING.md) first.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FScenicFramework%2Fscenic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FScenicFramework%2Fscenic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FScenicFramework%2Fscenic/lists"}