diff --git a/.sequelizerc.example b/.sequelizerc.example
new file mode 100644
index 0000000..29a0d14
--- /dev/null
+++ b/.sequelizerc.example
@@ -0,0 +1,8 @@
+var path = require('path');
+
+module.exports = {
+    'config':          path.resolve('config.json'),
+    'migrations-path': path.resolve('lib', 'migrations'),
+    'models-path':     path.resolve('lib', 'models'),
+    'url':             'change this'
+}
\ No newline at end of file
diff --git a/config.json.example b/config.json.example
new file mode 100644
index 0000000..22fd5c9
--- /dev/null
+++ b/config.json.example
@@ -0,0 +1,52 @@
+{
+    "development": {
+        "domain": "localhost",
+        "db": {
+            "username": "",
+            "password": "",
+            "database": "hackmd",
+            "host": "localhost",
+            "port": "3306",
+            "dialect": "mysql"
+        }
+    },
+    "production": {
+        "domain": "localhost",
+        "db": {
+            "username": "",
+            "password": "",
+            "database": "hackmd",
+            "host": "localhost",
+            "port": "5432",
+            "dialect": "postgres"
+        },
+        "facebook": {
+            "clientID": "change this",
+            "clientSecret": "change this"
+        },
+        "twitter": {
+            "consumerKey": "change this",
+            "consumerSecret": "change this"
+        },
+        "github": {
+            "clientID": "change this",
+            "clientSecret": "change this"
+        },
+        "gitlab": {
+            "baseURL": "change this",
+            "clientID": "change this",
+            "clientSecret": "change this"
+        },
+        "dropbox": {
+            "clientID": "change this",
+            "clientSecret": "change this"
+        },
+        "google": {
+            "clientID": "change this",
+            "clientSecret": "change this"
+        },
+        "imgur": {
+            "clientID": "change this"
+        }
+    }
+}
diff --git a/public/js/common.js.example b/public/js/common.js.example
new file mode 100644
index 0000000..11c32ac
--- /dev/null
+++ b/public/js/common.js.example
@@ -0,0 +1,95 @@
+//common
+var domain = ''; // domain name
+var urlpath = ''; // sub url path, like: www.example.com/<urlpath>
+//settings
+var debug = false;
+
+var GOOGLE_API_KEY = '';
+var GOOGLE_CLIENT_ID = '';
+
+var DROPBOX_APP_KEY = '';
+
+var port = window.location.port;
+var serverurl = window.location.protocol + '//' + (domain ? domain : window.location.hostname) + (port ? ':' + port : '') + (urlpath ? '/' + urlpath : '');
+var noteid = urlpath ? window.location.pathname.slice(urlpath.length + 1, window.location.pathname.length).split('/')[1] : window.location.pathname.split('/')[1];
+var noteurl = serverurl + '/' + noteid;
+
+var version = '0.4.4';
+
+var checkAuth = false;
+var profile = null;
+var lastLoginState = getLoginState();
+var lastUserId = getUserId();
+var loginStateChangeEvent = null;
+
+function resetCheckAuth() {
+    checkAuth = false;
+}
+
+function setLoginState(bool, id) {
+    Cookies.set('loginstate', bool, {
+        expires: 365
+    });
+    if (id) {
+        Cookies.set('userid', id, {
+            expires: 365
+        });
+    } else {
+        Cookies.remove('userid');
+    }
+    lastLoginState = bool;
+    lastUserId = id;
+    checkLoginStateChanged();
+}
+
+function checkLoginStateChanged() {
+    if (getLoginState() != lastLoginState || getUserId() != lastUserId) {
+        if(loginStateChangeEvent)
+            loginStateChangeEvent();
+        return true;
+    } else {
+        return false;
+    }
+}
+
+function getLoginState() {
+    var state = Cookies.get('loginstate');
+    return state === "true" || state === true;
+}
+
+function getUserId() {
+    return Cookies.get('userid');
+}
+
+function clearLoginState() {
+    Cookies.remove('loginstate');
+}
+
+function checkIfAuth(yesCallback, noCallback) {
+    var cookieLoginState = getLoginState();
+    if (checkLoginStateChanged())
+        checkAuth = false;
+    if (!checkAuth || typeof cookieLoginState == 'undefined') {
+        $.get(serverurl + '/me')
+            .done(function (data) {
+                if (data && data.status == 'ok') {
+                    profile = data;
+                    yesCallback(profile);
+                    setLoginState(true, data.id);
+                } else {
+                    noCallback();
+                    setLoginState(false);
+                }
+            })
+            .fail(function () {
+                noCallback();
+            })
+            .always(function () {
+                checkAuth = true;
+            });
+    } else if (cookieLoginState) {
+        yesCallback(profile);
+    } else {
+        noCallback();
+    }
+}
\ No newline at end of file