Thursday, February 14, 2013

Lawndart helps you write offline web apps

I'm happy to announce my new Lawndart library for Dart, which helps you build offline-enabled modern web apps. Using Lawndart, you can use a consistent and easy interface no matter what underlying storage mechanism is supported.

These things are seriously dangerous. The toy, not the source code.

Lawndart was initially inspired by lawnchair, a JavaScript library that helps to provide a consistent interface across client-side storage. However, Lawndart evolved and adopted a Future based API for more composable methods.

Available in version 0.2.0:
  • Unified API for in-memory, local storage, indexed db, and websql
  • Future-based APIs
  • Tests
  • Example Web UI app with IndexedDB

Here is an example of using Lawndart to open, clear, save, and retrieve data:

 var store = new IndexedDbAdapter('teststore', 'testdb');  
 store.open()  
  .then((_) => store.nuke())  
  .then((_) => store.save(id, "hello"))  
  .then((_) => store.save("is fun", "dart"))  
  .then((_) => store.getByKey("hello"))  
  .then((value) => query('#$id').text = value);  

Thanks to Futures, the APIs can be chained. All methods in Lawndart return a Future for asynchronous behavior.

You can install Lawndart from pub, Dart's package manager. Simply add a dependency to lawndart in your pubspec.yaml file:

 name: your_cool_app  
 dependencies:  
  lawndart: any  

Lawndart is open source and hosted on Github. Pull requests are much appreciated, as are bugs and feature requests.

Please try Lawndart and let me know what you think!

Photo Credit: im.no.hero cc
Post a Comment

Disclaimer

I'm probably required to say that the views expressed in this blog are my own, and do not necessarily reflect those of my employer. Also, except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the BSD License.