diff --git a/.bowerrc b/.bowerrc
new file mode 100644
index 0000000..38b8a96
--- /dev/null
+++ b/.bowerrc
@@ -0,0 +1,3 @@
+{
+ "directory": "public/bower_components"
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c2658d7..c7b9408 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
node_modules/
+public/bower_components/
diff --git a/bower.json b/bower.json
new file mode 100644
index 0000000..a1e6a41
--- /dev/null
+++ b/bower.json
@@ -0,0 +1,8 @@
+{
+ "name": "node-dnssec-name-shame",
+ "private": true,
+ "version": "0.0.0",
+ "dependencies": {
+ "jquery": "^2.1.0"
+ }
+}
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
index 4924a9b..a0475f7 100644
--- a/public/index.html
+++ b/public/index.html
@@ -123,6 +123,8 @@
DNSSEC name and shame! © 2013 Joel Purra and Tom Cuddy. Released under the AGPL-3.0 License.
+
+
diff --git a/public/resources/javascript/main.js b/public/resources/javascript/main.js
new file mode 100644
index 0000000..765c380
--- /dev/null
+++ b/public/resources/javascript/main.js
@@ -0,0 +1,21 @@
+var nameShameForm = $("#name-shame-form");
+
+function onSubmit(evt) {
+ var domainname = $("[name=domainname]", this).val();
+
+ $.getJSON("/name-shame/", {
+ domainname: domainname
+ })
+ .fail(function(jqXHR, textStatus, errorThrown) {
+ // TODO: show error to the user
+ console.error(jqXHR, textStatus, errorThrown);
+ })
+ .done(function(data, textStatus, jqXHR) {
+ // TODO: use data
+ console.log(data, textStatus, jqXHR);
+ });
+
+ return false;
+}
+
+nameShameForm.on("submit", onSubmit);
\ No newline at end of file