diff --git a/examples/indexedDB/index.coffee b/examples/indexedDB/index.coffee
new file mode 100644
index 0000000000000000000000000000000000000000..78f079af237be939f91f25b4582273ae507b4f2b
--- /dev/null
+++ b/examples/indexedDB/index.coffee
@@ -0,0 +1,48 @@
+
+class Buffer
+  constructor: (@buffer)->
+  set: (op)->
+    that = this
+    new Promise (resolve, reject)=>
+      request = that.buffer.put op
+      request.onsuccess = (event)->
+        resolve op
+      request.onerror = (event)->
+        reject "Could not set value!"
+
+  get: (uid)->
+    that = this
+    new Promise (resolve, reject)=>
+      request = that.buffer.get uid
+      request.onsuccess = (event)->
+        resolve request.result
+      request.onerror = (event)->
+        reject "Could not set value!"
+
+class window.HB
+  constructor: ()->
+    @ready = (new Promise (resolve, reject)->
+      request = indexedDB.open "Testy", 7
+      request.onerror = ()->
+        reject "Couldn't open the IndexedDB database!"
+      request.onsuccess = (event)->
+        resolve event.target.result
+      request.onupgradeneeded = (event)->
+        db = event.target.result
+        objectStore = db.createObjectStore "HistoryBuffer", {keyPath: "uid"}
+    ).catch (message)->
+      throw new Error message
+
+  requestBuffer: ()->
+    @ready.then (db)->
+      new Promise (resolve, reject)->
+        resolve new Buffer(db.transaction(["HistoryBuffer"], "readwrite").objectStore("HistoryBuffer"))
+
+  removeDatabase: ()->
+    req = indexedDB.deleteDatabase "Testy"
+    req.onsuccess = ()->
+      console.log("Deleted database successfully");
+    req.onerror = ()->
+      console.log("Couldn't delete database")
+
+window.hb = new HB()
diff --git a/examples/indexedDB/index.html b/examples/indexedDB/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..b925cc8869a3ac47382e292c6f3af70eb20506b5
--- /dev/null
+++ b/examples/indexedDB/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+        <meta charset=utf-8 />
+        <title>Y Example</title>
+        <script src="./index.js"></script>
+</head>
+<body>
+<h1 contentEditable>  Tutorial</h1>
+</body>
+</html>
diff --git a/examples/indexedDB/index.js b/examples/indexedDB/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..071b17c7925868fda673b438026263c797e44627
--- /dev/null
+++ b/examples/indexedDB/index.js
@@ -0,0 +1,96 @@
+// Generated by CoffeeScript 1.9.2
+(function() {
+  var Buffer;
+
+  Buffer = (function() {
+    function Buffer(buffer) {
+      this.buffer = buffer;
+    }
+
+    Buffer.prototype.set = function(op) {
+      var that;
+      that = this;
+      return new Promise((function(_this) {
+        return function(resolve, reject) {
+          var request;
+          request = that.buffer.put(op);
+          request.onsuccess = function(event) {
+            return resolve(op);
+          };
+          return request.onerror = function(event) {
+            return reject("Could not set value!");
+          };
+        };
+      })(this));
+    };
+
+    Buffer.prototype.get = function(uid) {
+      var that;
+      that = this;
+      return new Promise((function(_this) {
+        return function(resolve, reject) {
+          var request;
+          request = that.buffer.get(uid);
+          request.onsuccess = function(event) {
+            return resolve(request.result);
+          };
+          return request.onerror = function(event) {
+            return reject("Could not set value!");
+          };
+        };
+      })(this));
+    };
+
+    return Buffer;
+
+  })();
+
+  window.HB = (function() {
+    function HB() {
+      this.ready = (new Promise(function(resolve, reject) {
+        var request;
+        request = indexedDB.open("Testy", 7);
+        request.onerror = function() {
+          return reject("Couldn't open the IndexedDB database!");
+        };
+        request.onsuccess = function(event) {
+          return resolve(event.target.result);
+        };
+        return request.onupgradeneeded = function(event) {
+          var db, objectStore;
+          db = event.target.result;
+          return objectStore = db.createObjectStore("HistoryBuffer", {
+            keyPath: "uid"
+          });
+        };
+      }))["catch"](function(message) {
+        throw new Error(message);
+      });
+    }
+
+    HB.prototype.requestBuffer = function() {
+      return this.ready.then(function(db) {
+        return new Promise(function(resolve, reject) {
+          return resolve(new Buffer(db.transaction(["HistoryBuffer"], "readwrite").objectStore("HistoryBuffer")));
+        });
+      });
+    };
+
+    HB.prototype.removeDatabase = function() {
+      var req;
+      req = indexedDB.deleteDatabase("Testy");
+      req.onsuccess = function() {
+        return console.log("Deleted database successfully");
+      };
+      return req.onerror = function() {
+        return console.log("Couldn't delete database");
+      };
+    };
+
+    return HB;
+
+  })();
+
+  window.hb = new HB();
+
+}).call(this);