/ClojureDart

A port of Clojure that compiles to Dart

Primary LanguageClojure

What is ClojureDart?

ClojureDart is a port of the Clojure language to Dart.

Its primary goal is to leverage Dart and Flutter to extend Clojure's reach to mobile and desktop apps.

Foreword

We promised to publicly release ClojureDart before Easter 2022, so here it is!

This doesn't represent a specific technical milestone, it's still a work-in-progress but we believe it's good enough for use by the bravest Clojurists.

Who is behind it?

Tensegritics, an itty-bitty Clojure consultancy by Baptiste Dupuch🐦 and Christophe Grand🐦.

Status

Here be Dragons!

ClojureDart is a work-in-progress. Some features may be outright missing or partially implemented or even bugged. In any case get in touch with us or open an issue.

  • no REPL yet
  • multi-method (WIP)
  • sorted-collection (WIP)

Some differences have been documented, see Differences with Clojure.

Quick starts

cljd.flutter.alpha

cljd.flutter.alpha is an utility namespace to remove Flutter boilerplate and integrate it a bit more with Clojure.

Learn more about it!

Going further with Flutter

In the samples directory you'll find some ports of Flutter recipes.

How to run a sample project

Clone the ClojureDart repo.

git clone https://github.com/Tensegritics/ClojureDart.git

Go to the sample you want to try, let's say fab:

cd ClojureDart/samples/fab

Init the project:

clj -M:cljd init

Start a simulator or connect a device.

Then launch the watcher:

clj -M:cljd flutter

Enjoy! 🧃

Thanks!

To all individuals who blindly believed in our endeavor and sponsored our work.

To NuBank who approached us very early for sponsorship.

To Roam Research who bet their mobile apps development (now in the App Store and Play Store) on ClojureDart and allowed us to make steady progress since Summer 2021.

If you want to sponsor our work, you can sponsor either of us, we'll balance sponsorship. If you are a company you can also contact us directly.