").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
\ No newline at end of file
diff --git a/web/discover.html b/web/discover.html
new file mode 100644
index 00000000..2abbd4f6
--- /dev/null
+++ b/web/discover.html
@@ -0,0 +1,19 @@
+
Introduction to Data
+
+
Your thoughts are information. Conversation explore interactions of ideas amongst yourself and others. We communicate by creating art via writing, drawing, or composing. Experiences are shared by recording reality.
+
+
All these things can be represented by data. If you want to build a tool that enriches any of these, you have to care about data. Specifically, you need a system that can store and move information.
+
+
You came to the right place, we will explain how to make a web app for each kind. Starting with the simplest and progressing to ever more complicated projects. It is important to know that everything we use will be based on free and open technology, including this tutorial itself.
+
+Let us begin.
+
+Think
+Converse
+Contact
+Find
+Write
+Draw
+Compose
+Record
+Automate
\ No newline at end of file
diff --git a/web/editor.html b/web/editor.html
new file mode 100644
index 00000000..70e08a27
--- /dev/null
+++ b/web/editor.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/think.html b/web/think.html
new file mode 100644
index 00000000..89027a00
--- /dev/null
+++ b/web/think.html
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
Before we can start building anything interesting, we should have a way to jot down our thoughts. Therefore the first thing we will build is a tool to keep track of what needs to be done. The infamous To-Do app, allowing us to keep temporary notes.
+
+
So what are the requirements? The ability to add a note, read our notes, and clear them off. Additionally, we need a space to keep these notes in, and a web page to access them through. Let's start with the page!
+
+
... loading editor ...
+
+
+
+
+
+
+
+
What does this do? HTML is how we code the layout of a web page.
+
+
We first must wrap all our code in an html tag so our computer knows it is a web page.
+
The body tag tells it to display the contents enclosed within.
+
h2 is one of many semantic tags for declaring a title, others include h1, h3 and so on of different sizes.
+
A form is a container for getting information from a user.
+
Form's have inputs which let the user type data in, it is a self-closing tag.
+
The button can be pressed, causing an action that we code to happen.
+
ul is an unordered list, we will display our thoughts inside that list.
+
+ Now, try changing the h1 text from "Title" to the name of our app, "Thoughts".
+
+
+
+
+
+
+
See how the preview live updated? This helps us see our code as we type it.
+
Now we want to write code that reacts to a user pressing the 'add' button. We can do this using raw javascript but it quickly becomes verbose, so to keep things concise we will use a popular library called jQuery. Also, we need a way to store the thoughts, so we will include GUN as well.
+
Insert the following inbetween the ending ul tag and the ending body tag:
+
+
+
+
+
+
+
+
Wonderful! You should have gotten the alert message, this means writing code works! Let's replace the alert line with code that reacts to user input.
+
+
What's going on here?
+
+
The $ is a symbol for jQuery, we call it by enclosing text within parenthesis ().
+
jQuery will give us a reference to the HTML tag that corresponds to 'form', the quotation marks denote text in javascript.
+
on is a $ command that can be called as well. We call it with the text of the name of the event we want to react to, and a function which gets called when that event happens.
+
There are many different events, such as 'click' when a user presses something or 'mousemove'. But we will use 'submit' because it reacts to both a button 'click' or a return keystroke on a form.
+
A function is code that does not get run until it is called. It typically gets called with data, like event.
+
The default behavior of a form is to cause the browser to change pages, we can prevent that by calling preventDefault on the event.
+
Finally, caling $ with 'input' will reference the HTML input tag and then calling val on that gives us the value the user typed in.
+
+
+
+
+
+
+
+
Now that users can jot down their thoughts, we need a place to save them.
+
+
+
The variable keyword tells javascript that we want to create a reference named gun that we can reuse.
+
First we call Gun to start up the database, which only needs to be done once.
+
Then we can chain off of it, by calling get with the text of the name of our data to load.
+
However, no data has been saved to 'thoughts' yet! So we cannot open anything.
+
If we add calling set onto the chain, it will update 'thoughts' to hold data.
+
Now gun is a reference to this data chain! We will use it in the next step to save our thoughts
+