diff --git a/examples/indexedDB/index.coffee b/examples/indexedDB/index.coffee
new file mode 100644
index 00000000..78f079af
--- /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 00000000..b925cc88
--- /dev/null
+++ b/examples/indexedDB/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Y Example
+
+
+
+ Tutorial
+
+
diff --git a/examples/indexedDB/index.js b/examples/indexedDB/index.js
new file mode 100644
index 00000000..071b17c7
--- /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);