Learning Elm by porting a medium-sized web front end from React (2019)

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • Elm

    Compiler for Elm, a functional language for reliable webapps.

  • elm is a lovely lang. it would be nice to have modern APIs on it.

    here's the project for new eyes:

    https://github.com/elm/core

    https://elm-lang.org/

  • compiler

    Compiler for the Gren programming language (by gren-lang)

  • I use Elm and am quite happy with it, despite the project being dead (and Evans horrible cult of personality).

    I am also keeping on eye on Gren as a replacement: https://gren-lang.org/

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • intl-proxy

    Provides access to the Browsers Intl Api via a JS Proxy Object in Elm

  • https://github.com/elm/regex/commits/1.0.0/

    So it seems like by the time of the official release you could have replaced your five lines with `Regex.fromString`.

    But the missing Intl API is definitely a huge pain, and I understand that you were switching away if you needed it extensively. Or expected to want other sync APIs wrapped.

    A common way to solve something like this is with proxy objects like in https://github.com/anmolitor/intl-proxy but it does not give access to every feature in a nice way.

    I went the route of least resistance and built the Elm compiler without the Kernel code check. But in the past few years I hardly needed that anymore.

  • core

    Elm's core libraries (by elm)

  • elm is a lovely lang. it would be nice to have modern APIs on it.

    here's the project for new eyes:

    https://github.com/elm/core

    https://elm-lang.org/

  • React

    The library for web and native user interfaces.

  • What story does that tell?

    React's would say 2022 - https://github.com/facebook/react/releases

    There's engineering effort happening behind the scenes on both projects, the releases have slowed, and big changes are coming to both Elm and React.

  • purescript

    A strongly-typed language that compiles to JavaScript

  • reason

    Simple, fast & type safe code that leverages the JavaScript & OCaml ecosystems

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • zokka-compiler

    Fork of compiler for Elm, a functional language for reliable webapps.

  • along those lines, Zokka is a fork of elm that appears to be mostly dedicated towards bug fixes that Evan (the creator of elm) refuses to acknowledge or merge.

    https://github.com/Zokka-Dev/zokka-compiler

  • rescript-compiler

    The compiler for ReScript.

  • If you’re a front-end developer, you should checkout ReScript[1], supposedly a JS-oriented successor of ReasonML and developed by the ReasonML team.

    [1] https://rescript-lang.org/

  • tyrian

    Elm-inspired Scala UI library.

  • If you want to try TEA, but not Elm I reccomend Scala.js with Tyrian[1]. Scala.js is a wonderful, mature project and Tyrian gives you the elm architecture in a very pragmatic way.

    [1]: https://tyrian.indigoengine.io/

  • regex

    If you really need regex in Elm, it is possible. (by elm)

  • https://github.com/elm/regex/commits/1.0.0/

    So it seems like by the time of the official release you could have replaced your five lines with `Regex.fromString`.

    But the missing Intl API is definitely a huge pain, and I understand that you were switching away if you needed it extensively. Or expected to want other sync APIs wrapped.

    A common way to solve something like this is with proxy objects like in https://github.com/anmolitor/intl-proxy but it does not give access to every feature in a nice way.

    I went the route of least resistance and built the Elm compiler without the Kernel code check. But in the past few years I hardly needed that anymore.

  • js-integration-examples

    Examples of common uses of ports and web components

  • Yes, ports or custom elements are the recommended options, https://github.com/elm-community/js-integration-examples

    There are a bunch of other options/workarounds/hacks depending on the need. E.g. using getters or creating proxy objects https://github.com/anmolitor/intl-proxy, or event listeners, or postprocessing of the generated JS code, but those shouldn't be the first idea to reach for.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts