PortalView - A (potentially) cross-platform, declarative and immutable Swift library for building user interfaces

  •        15

A (potentially) cross-platform, declarative and immutable Swift library for building user interfaces. WARNING!: This is still a work-in-progress, although the minimum features are available to create real world applications the API is still under design and some key optimizations are still missing. Use at your own risk.

https://github.com/guidomb/PortalView

Tags
Implementation
License
Platform

   




Related Projects

Blueprint - Declarative UI construction for iOS, written in Swift

  •    Swift

Blueprint greatly simplifies the task of building and updating views as application state changes. We still consider Blueprint experimental (and subject to major breaking API changes), but it has been used within Square's production iOS apps.

purescript-halogen - A declarative, type-safe UI library for PureScript.

  •    PureScript

A declarative, type-safe UI library for PureScript.

brick - A declarative terminal UI programming library written in Haskell

  •    Haskell

brick is a Haskell terminal user interface programming library in the style of gloss. This means you write a function that describes how your user interface should look, but the library takes care of a lot of the book-keeping that so commonly goes into writing such programs. brick exposes a declarative API. Unlike most GUI toolkits which require you to write a long and tedious sequence of "create a widget, now bind an event handler", brick just requires you to describe your interface using a set of declarative combinators. Then you provide a function to transform your application state when input or other kinds of events arrive.

layerJS - layerJS: Javascript UI composition framework

  •    Javascript

layerJS is an open source Javascript UI/UX library allowing intuitive, visually intense, mobile app-like experiences for web apps and websites. layerJS follows the idea that any kind of interactive web content is composed of media elements on moving layers. Unlike existing UI frameworks, layerJS does not provide various UI elements (use your favorite framework for that) but focusses on how larger blocks are put together to form websites and apps and how these blocks will behave upon user interaction.


ComposeCookBook - A Collection on all Jetpack compose UI elements, Layouts, Widgets and Demo screens to see it's potential

  •    Kotlin

Jetpack Compose is Android’s modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. Please get Android Studio Arctic Fox 2020.3.1 Canary 4 or above from here and use JDK 11 to build this project.

bindonce - Zero watches binding for AngularJs

  •    Javascript

Here is an example of how AngularJs can freeze your UI, try to press and hold a key inside the input field, when the table is filled with only 1 person everything is ok, you can see how the DOM is updated by the input in real time, however if you try to load 1000 person (or even 500 if the testing device is not powerfull) and repeat the experiment you can see how the UI is frozen. In this other demo BindOnce will take care of your watchers and the UI will be reactive as it should be. The code is the same for both demos, the only difference is that I replaced any ng-* tag inside the table with the equivalent bo-* tag. AngularJs provides a great data binding system but if you abuse of it the page can run into some performance issues, it's known that more of 2000 watchers can lag the UI and that amount can be reached easily if you don't pay attention to the data-binding. Sometime you really need to bind your data using watchers, especially for SPA because the data are updated in real time, but often you can avoid it with some efforts, most of the data presented in your page, once rendered, are immutable so you shouldn't keep watching them for changes.

react-cursor - Immutable state for React.js

  •    Javascript

Cursors are a tool for working with recursive or deeply nested data, immutably. react-cursor is a javascript port of an abstraction that I first saw in ClojureScript. This implementation is decoupled from any rendering library and is very small. Cursors are useful in UI programming, because UIs are tree shaped and naturally have tree-shaped state. Cursors let your app hold all its state in one place at the root of the UI tree; thus the root is stateful, and all downtree views are stateless.

compose-jb - Jetpack Compose for Desktop and Web, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable

  •    Kotlin

Compose Kotlin UI framework port for desktop platforms (macOS, Linux, Windows), components outside of the core Compose repository at https://android.googlesource.com/platform/frameworks/support. See https://github.com/JetBrains/compose-jb/tags for the latest build number.

updeep - Easily update nested frozen objects and arrays in a declarative and immutable manner.

  •    Javascript

Easily update nested frozen objects and arrays in a declarative and immutable manner. updeep makes updating deeply nested objects/arrays painless by allowing you to declare the updates you would like to make and it will take care of the rest. It will recursively return the same instance if no changes have been made, making it ideal for using reference equality checks to detect changes (like PureRenderMixin).

Activable - declarative UI components | 2K, 0 dependency, IE8 compat.

  •    Javascript

declarative UI components | 2K, 0 dependency, IE8 compat.

MarkupKit - Declarative UI for iOS and tvOS

  •    Objective-C

MarkupKit is an open-source framework for simplifying development of native iOS and tvOS applications. It allows developers to construct user interfaces declaratively using a human-readable, HTML-like markup language, and can in most cases be used as a drop-in replacement for XIB files or storyboards. In addition to support for all system-provided view types, MarkupKit includes a set of UIView subclasses that make working with auto layout much easier. It also supports custom (i.e. application-specific) view types.

immer - Postmodern immutable and persistent data structures for C++

  •    C++

immer is a library of persistent and immutable data structures written in C++. These enable whole new kinds of architectures for interactive and concurrent programs of striking simplicity, correctness, and performance. In the last few years, there has been a growing interest in immutable data structures, motivated by the horizontal scaling of our processing power and the ubiquity of highly interactive systems. Languages like Clojure and Scala provide them by default, and implementations for JavaScript like Mori and Immutable.js are widely used, specially in combination with modern UI frameworks like React.

Bento - Swift library for building component-based interfaces on top of UITableView and UICollectionView 🍱

  •    Swift

Bento is a Swift library for building component-based interfaces on top of UITableView. In our experience it makes UI-related code easier to build and maintain. Our aim is to make the UI a function of state (i.e: UI = f(state)), which makes Bento a perfect fit for Reactive Programming.

NuclearJS - Reactive Flux built with ImmutableJS data structures. Framework agnostic.

  •    Javascript

NuclearJS is a traditional Flux architecture built with ImmutableJS data structures. The goal of NuclearJS is to provide a way to model data that is easy to reason about and decouple at very large scale. The framework should be implemented functionally wherever appropriate. This reduces incidental complexity and pairs well with Immutability.

ferret - Declarative web scraping

  •    Go

ferret is a web scraping system. It aims to simplify data extraction from the web for UI testing, machine learning, analytics and more. ferret allows users to focus on the data. It abstracts away the technical details and complexity of underlying technologies using its own declarative language. It is extremely portable, extensible, and fast. It as the ability to scrape JS rendered pages, handle all page events and emulate user interactions.

React Native - A framework for building native apps with React.

  •    Javascript

React Native lets you build mobile apps using only JavaScript. It uses the same design as React, letting you compose a rich mobile UI from declarative components. With React Native, you don't build a “mobile web app”, an “HTML5 app”, or a “hybrid app”. You build a real mobile app that's indistinguishable from an app built using Objective-C or Java. React Native uses the same fundamental UI building blocks as regular iOS and Android apps.

wpf - WPF is a .NET Core UI framework for building Windows desktop applications.

  •    CSharp

Windows Presentation Foundation (WPF) is a UI framework for building Windows desktop applications. WPF supports a broad set of application development features, including an application model, resources, controls, graphics, layout, data binding and documents. WPF uses the Extensible Application Markup Language (XAML) to provide a declarative model for application programming. WPF applications are based on a vector graphics architecture. This enables applications to look great on high DPI monitors, as they can be infinitely scaled. WPF also includes a flexible hosting model, which makes it straightforward to host a video in a button, for example. The visual designer provided in Visual Studio makes it easy to build WPF application, with drag-in-drop and/or direct editing of XAML markup.

go-app - A package to build progressive web apps with Go programming language and WebAssembly.

  •    Go

Go-app is a package for building progressive web apps (PWA) with the Go programming language (Golang) and WebAssembly (Wasm). Shaping a UI is done by using a declarative syntax that creates and compose HTML elements only by using the Go programing language.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.