diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 0000000000000000000000000000000000000000..3848bc928afb91008c981a30a6c21a8aee36bd56
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,63 @@
+module.exports = function (grunt) {
+  "use strict";
+
+  // Project configuration.
+  grunt.initConfig({
+    pkg: grunt.file.readJSON('package.json'),
+    uglify: {
+      options: {
+        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
+      },
+      jio: {
+        src: 'jio.js', // '<%= pkg.name %>.js'
+        dest: 'jio.min.js',
+      }
+    },
+    jslint: {
+      jio: {
+        src: ['src/jio/**/*.js'],
+        exclude: ['src/jio/intro.js', 'src/jio/outro.js'],
+        options: {
+          errorsOnly: true,
+        }
+      },
+      tests: {
+        src: ['test/**/*.js'],
+        options: {
+          errorsOnly: true,
+        }
+      }
+      // queries: {
+      //   src: ['src/queries/**/*.js'],
+      //   exclude: ['src/queries/begin.js', 'src/queries/end.js']
+      // }
+    },
+    concat: {
+      jio: {
+        //banner: 'src/jio/intro.js',
+        //footer: 'src/j',
+        src: [
+          'src/jio/intro.js',
+          'src/jio/core/**/*.js',
+          'src/jio/features/**/*.js',
+          'src/jio/outro.js',
+        ],
+        dest: 'jio.js',
+      }
+    },
+    qunit: {
+      files: ['test/tests.html'], // grunt doesn't like requirejs
+    },
+  });
+
+  grunt.loadNpmTasks('grunt-jslint');
+  grunt.loadNpmTasks('grunt-contrib-concat');
+  grunt.loadNpmTasks('grunt-contrib-uglify');
+  grunt.loadNpmTasks('grunt-contrib-qunit');
+
+  grunt.registerTask('default', ['jslint', 'concat', 'uglify']); //, 'qunit']);
+
+  grunt.registerTask('lint', ['jslint']);
+  grunt.registerTask('build', ['concat', 'uglify']);
+  grunt.registerTask('test', ['jslint', 'qunit']);
+};
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..e3cc4ac7911f0e606c599352df412c3ff5a062fe
--- /dev/null
+++ b/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "JIO",
+  "version": "0.2.0"
+}