Please describe your proposed solution.
At its core, Cardano is built on the principles of pure functional programming with concepts such as immutable data structures (UTxO) or deterministic computation without side effects (uplc VM). Just like for the blockchain space, these properties bring many advantages to programming languages leveraging them, such as Haskell.
In the frontend world, JavaScript is the main contender. However, I argue that this is a less-than ideal choice for Cardano dapps frontend for multiple reasons. JS is error-prone due to global mutability, omnipresent side effects, complex ecosystem and build tools. In addition, Cardano JS libraries have many issues too. Lucid is basically unmaintained, CSL & CML have a webassembly core with very unfriendly error messages (same for libraries building on these), cardano-js-sdk has no onboarding and guiding documentation.
Meanwhile, Elm is the simplest and friendliest pure functional language of the ML family (like Haskell). It is purpose-built for frontend web development. It has such good error messages that they explicitly served as inspiration for many other languages, such as Rust. Its foundation is well build and inspired major JS frontend frameworks such as redux. Basically, I think it is a perfect match for Cardano, especially when paired with Aiken or Haskell.
I have started working on the elm-cardano framework, and intends to cover the following:
- Simple building, submission and watching of transactions
- Simple interaction with Cardano wallets (CIP30, CIP45)
- Simple interaction with Cardano infrastructure (ogmios, blockfrost, …)
- Elm-cardano examples for the Aiken tutorials
- Thorough guide and complete example project covering many aspects of a Cardano dapp
- (if there is time) Time-travel simulator for end-to-end testing and interactive replay of contracts
The project is entirely open-source, coordinated in the #elm channel of txpipe discord, and has already attracted 4 independent contributors on subjects ranging from CBOR codecs to coin selection algorithms. Two of these contributors are KtorZ and rvcas from the Aiken team.