diff --git a/README.md b/README.md
index 18e9f8241c535e90f310f9c16d44d8209d802628..d64a2f05860d73cae7a698416786666108bc8ea8 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,10 @@
 * Highlight pre
 * Next & Previous Post
 * Disqus comment
+* Projects
+* Project page
+* Share on social media
+* Google analytics
 
 #### Screenshot
 
diff --git a/_config.yml b/_config.yml
index 5b342340b1370b4a06b52ee41f1d57335ab9c850..4a52f4468775c5170224e4351747018bc9d11174 100644
--- a/_config.yml
+++ b/_config.yml
@@ -3,16 +3,49 @@ description: My Personal Stack Problems
 author: Agus Makmun
 github: https://github.com/agusmakmun
 about: I am freelance developer. Currently doing more in backend, actually in Python and Django.
+disqus_shortname: aboutashu
+google_analytics: UA-XXXXXXXX-Y
+
+enableTags: true
+tagarray: []
+
+collections:
+  project:
+    output: true
+    permalink: /project/:path/
+
+social:
+    - icon: fa-facebook
+      link: "#"
+    - icon: fa-skype
+      link: "#"
+    - icon: fa-twitter
+      link: "#"
+    - icon: fa-linkedin
+      link: "#"
+    - icon: fa-stack-exchange
+      link: "#"
+
+share:
+  twitter_username: 216ashutosh
+  fb_appid: 0000000000000
+
 urls:
     - text: About Me
       url: /about/
+    - text: Projects
+      url: /projects/
     - text: Github
       url: https://github.com/agusmakmun
     - text: XML Feed
       url: /feed.xml
+
 url: "https://agusmakmun.github.io"
 baseurl: ""
 paginate: 20
 per_page: 20
 paginate_path: "/page:num/"
-markdown: kramdown
\ No newline at end of file
+markdown: kramdown
+gems:
+  - jekyll-paginate
+  - jekyll-gist
\ No newline at end of file
diff --git a/_data/projects.json b/_data/projects.json
new file mode 100644
index 0000000000000000000000000000000000000000..c52980cb8df169c0333a09ca443603c04610f03a
--- /dev/null
+++ b/_data/projects.json
@@ -0,0 +1,31 @@
+[
+	{
+		"slug": "cool-project",
+		"name": "Cool project 1",
+		"image": "placeholder.jpg",
+		"url": "#",
+		"date": "Jan 2014",
+		"tags": ["Angular JS","API"]
+	},
+	{
+		"name": "Cool project 2",
+		"image": "placeholder.jpg",
+		"url": "#",
+		"date": "May 2014",
+		"tags": ["Android","PHP"]
+	},
+	{
+		"name": "Cool project 3",
+		"image": "placeholder.jpg",
+		"url": "#",
+		"date": "June 2014",
+		"tags": ["HTML","JQuery","PHP"]
+	},
+	{
+		"name": "Cool project 4",
+		"image": "placeholder.jpg",
+		"date": "Oct 2016",
+		"tags": ["Android","nodejs"]
+	}
+
+]
\ No newline at end of file
diff --git a/_includes/analytics.html b/_includes/analytics.html
new file mode 100644
index 0000000000000000000000000000000000000000..bb6b281de42b98ec8024c60d071e25073071f87c
--- /dev/null
+++ b/_includes/analytics.html
@@ -0,0 +1,10 @@
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+  ga('create', '{{ site.google_analytics }}', 'auto');
+  ga('send', 'pageview');
+
+</script>
\ No newline at end of file
diff --git a/_includes/project_tags.html b/_includes/project_tags.html
new file mode 100644
index 0000000000000000000000000000000000000000..de11b902bee3bd0fb2d22fbc60fdcec6b442c36c
--- /dev/null
+++ b/_includes/project_tags.html
@@ -0,0 +1,25 @@
+{% if site.enableTags ==  true %} 
+	<div id="tag-filter" class="tag-group">
+		<span class="tag-filter tag-cloud all active">All</span>
+        {% assign tagarray = site.tagarray %}
+        {% for project in site.data.projects %}
+            {% for tag in project.tags %}
+                {% assign tagarray = tagarray | push: tag %}
+            {% endfor %}
+        {% endfor %}
+
+        {% assign tags = tagarray[1] %}
+        {% for item in tagarray %}
+            {% assign tagDown = item | downcase %}
+            {% assign tagComp = tags | downcase %}
+            {% unless tagComp contains tagDown %}
+                {% capture tags %}{{ tags }}|{{ item }}{% endcapture %}
+            {% endunless %}
+        {% endfor %}
+
+        {% assign taglist = tags | split: '|' | sort %}
+        {% for tag in taglist %}
+            <span class="tag-filter tag-cloud" data-tag="{{ tag | downcase }}">{{ tag }}</span>
+        {% endfor %}
+	</div>
+{% endif %}
\ No newline at end of file
diff --git a/_includes/share-page.html b/_includes/share-page.html
new file mode 100644
index 0000000000000000000000000000000000000000..53355c7a9c713cea7f2cd97fde08f0e2ca67a595
--- /dev/null
+++ b/_includes/share-page.html
@@ -0,0 +1,20 @@
+<div class="share-page">
+    Share this on &rarr;
+ <a href="https://twitter.com/share" class="twitter-share-button" data-via="{{ site.share.twitter_username }}">Tweet</a>
+<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+
+<!-- Google + -->
+<div class="g-plus" data-action="share" data-annotation="bubble"></div>
+<script src="https://apis.google.com/js/platform.js" async defer></script>
+
+<!-- Facebook -->
+<div class="fb-share-button" data-href="{{site.url}}{{page.url}}" data-layout="button_count" style="position: relative; top: -8px; left: 3px;"></div>
+</div>
+<div id="fb-root"></div>
+<script>(function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s); js.id = id;
+  js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.6&appId={{ site.share.fb_appid }}";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
\ No newline at end of file
diff --git a/_includes/social_links.html b/_includes/social_links.html
new file mode 100644
index 0000000000000000000000000000000000000000..a8aa9afe5b53fe939cbf94fd78f9ac8e1c463c82
--- /dev/null
+++ b/_includes/social_links.html
@@ -0,0 +1,7 @@
+<div class="social">
+	<ul>
+		{% for link in site.social %}
+			<li><a href="{{ link.link }}" target="_blank"><i class="fa {{ link.icon }}"></i></a></li>
+		{% endfor %}
+	</ul>
+</div>
\ No newline at end of file
diff --git a/_layouts/default.html b/_layouts/default.html
index 1a1287c2890715a81459dde54462890e036ab42a..2113f3585b807d69f7f41879cf66e2ddc182de2f 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -12,6 +12,69 @@
         <meta name="keywords" content="{% if page.title %}{{ page.title }}, {{ site.title }}, {% for categ in page.categories %}{{ categ }}{% if forloop.last == false %}, {% endif %}{% endfor %}{% else %}{{ site.title }}, {% for category in site.categories %}{% capture categories_slug %}{{ category | first }}{% endcapture %}{% for categ in categories_slug %}{{ categ }}{% endfor %}{% if forloop.last == false %}, {% endif %}{% endfor %}{% endif %}" />
         <link rel="alternate" type="application/rss+xml" title="RSS" href="/feed.xml">
 
+        <meta content="{{ site.share.fb_appid }}" property="fb:app_id">
+        <meta content="{{ site.title }}" property="og:site_name">
+        {% if page.title %}
+          <meta content="{{ page.title }}" property="og:title">
+        {% else %}
+          <meta content="{{ site.title }}" property="og:title">
+        {% endif %}
+        {% if page.title %}
+          <meta content="article" property="og:type">
+        {% else %}
+          <meta content="website" property="og:type">
+        {% endif %}
+        {% if page.description %}
+          <meta content="{{ page.description }}" property="og:description">
+        {% else %}
+          <meta content="{{ site.description }}" property="og:description">
+        {% endif %}
+        {% if page.url %}
+          <meta content="{{ site.url }}{{ page.url }}" property="og:url">
+        {% endif %}
+        {% if page.date %}
+          <meta content="{{ page.date | date_to_xmlschema }}" property="article:published_time">
+          <meta content="{{ site.url }}/about/" property="article:author">
+        {% endif %}
+        {% if page.image %}
+          <meta content="{{ site.url }}/static/img/posts/{{ page.image }}" property="og:image">
+        {% else %}
+          <meta content="{{ site.url }}/static/img/logo-high-resolution.png" property="og:image">
+        {% endif %}
+        {% if page.categories %}
+          {% for category in page.categories limit:1 %}
+          <meta content="{{ category }}" property="article:section">
+          {% endfor %}
+        {% endif %}
+        {% if page.tags %}
+          {% for tag in page.tags %}
+          <meta content="{{ tag }}" property="article:tag">
+          {% endfor %}
+        {% endif %}
+
+        <meta name="twitter:card" content="summary">
+        <meta name="twitter:site" content="@{{ site.share.twitter_username }}">
+        <meta name="twitter:creator" content="@{{ site.share.twitter_username }}">
+        {% if page.title %}
+          <meta name="twitter:title" content="{{ page.title }}">
+        {% else %}
+          <meta name="twitter:title" content="{{ site.title }}">
+        {% endif %}
+        {% if page.url %}
+          <meta name="twitter:url" content="{{ site.url }}{{ page.url }}">
+        {% endif %}
+        {% if page.description %}
+          <meta name="twitter:description" content="{{ page.description }}">
+        {% else %}
+          <meta name="twitter:description" content="{{ site.description }}">
+        {% endif %}
+        {% if page.header-img %}
+          <meta name="twitter:image:src" content="{{ site.url }}/{{ page.header-img }}">
+        {% endif %}
+
+        <!-- Font awesome icons -->
+        <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
+
         <!-- syntax highlighting CSS -->
         <link rel="stylesheet" href="/static/css/syntax.css">
 
@@ -23,7 +86,12 @@
 
         <!-- Custom CSS -->        
         <link rel="stylesheet" href="/static/css/super-search.css">
+        <link rel="stylesheet" href="/static/css/thickbox.css">
+        <link rel="stylesheet" href="/static/css/projects.css">
         <link rel="stylesheet" href="/static/css/main.css">
+
+        <!-- Google Analytics -->
+        {% include analytics.html %}
     </head>
 
     <body>
@@ -37,7 +105,8 @@
                 </div>
                 {% endif %}
 
-                <hr />                
+                {% include social_links.html %}
+
                 <div class="search" id="js-search">
                   <input type="text" placeholder="(sitemap)~$ type to search" class="search__input form-control" id="js-search__input">
                   <ul class="search__results" id="js-search__results"></ul>
@@ -72,7 +141,10 @@
         ================================================== -->
         <!-- Placed at the end of the document so the pages load faster -->
         <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+        <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
         <script src="/static/js/bootstrap.min.js"></script>
         <script src="/static/js/super-search.js"></script>
+        <script src="/static/js/thickbox-compressed.js"></script>
+        <script src="/static/js/projects.js"></script>
     </body>
 </html>
diff --git a/_layouts/post.html b/_layouts/post.html
index 7644718d483d88ddb09b130b70b7e293f23938a1..1cd9e101bc71a8454d4af354af7037800eae5154 100644
--- a/_layouts/post.html
+++ b/_layouts/post.html
@@ -11,6 +11,7 @@ layout: default
 
 <div class="content">
     <div class="post">{{ content }}</div>
+    {% include share-page.html %}
 </div>
 
 {% assign hasSimilar = '' %}
@@ -56,7 +57,7 @@ layout: default
     <script type="text/javascript">
         /* <![CDATA[ */
 
-        var disqus_shortname = 'stackproblems';
+        var disqus_shortname = "{{ site.disqus_shortname }}";
         var disqus_identifier = "{{ site.url }}_{{ page.title }}";
         var disqus_title = "{{ page.title }}";
 
diff --git a/_layouts/project.html b/_layouts/project.html
new file mode 100644
index 0000000000000000000000000000000000000000..e598f443538cc16486e909d50774c269dbc272f5
--- /dev/null
+++ b/_layouts/project.html
@@ -0,0 +1,63 @@
+---
+layout: default
+---
+<article class="post">
+
+  <header class="post-header">
+    <h1 class="post-title">{{ page.title }}</h1>
+    <hr />
+  </header>
+
+  <div class="post-content">
+    {{ content }}
+
+    {% assign p_array = "" | split:"|"  %}
+    {% for project in site.project %}
+    {% capture p_slug %}{{ project.url | split:"/" | last }},{{ project.url }}{% endcapture %}
+    {% assign p_slug_arr = p_slug | split:"," %}
+    {% assign p_array = p_array | push: p_slug_arr  %}
+    {% endfor %}
+
+    <div class="projects">
+    {% include project_tags.html %}
+    {% for i in site.data.projects %}
+    	<div class="project-item project-outer" data-tags='{{ i.tags | jsonify | downcase }}'>
+    		<div class="project-inner">
+    			<a href="/static/projects/{{ i.image }}" class="thickbox">
+    			<div class="project-img bordered" style="background-image: url('/static/projects/{{ i.image }}');"></div>
+                </a>
+                {% assign p_url = nil %}
+                {% for pr in p_array %}
+                    {% if pr contains i.slug %}
+                        {% assign p_url = pr[1] %}
+                    {% endif %}
+                {% endfor %}
+                {% if p_url == nil %}{% assign p_url = i.url %}{% endif %}
+                {% if p_url %}<a href="{{ p_url }}">{% endif %}
+    			<h3 class="project-headlines">{{ i.name }}</h3>
+    			{% if p_url %} </a> {% endif %}
+    			<div class="project-content">
+    				<div class="tag-holder">
+    				{% if i.tags %} 
+    					{% for j in i.tags %}
+    					<span class="tags tag-filter" data-tag="{{ j | downcase }}"><a href="#">{{ j }}</a></span>
+    					{% endfor %}
+    				{% endif %}
+    				</div>
+    				
+    			</div>
+    			<div class="project-footer"> 
+    				{% if i.url %} 
+    				<a href="{{ i.url }}" class="project-link">View</a>
+    				{% endif %}
+    				<span class="project-timeline">{{ i.date }}</span>
+    			</div>
+    		</div>
+    		<hr>
+    	</div>
+
+    {% endfor %}
+    </div>
+  </div>
+
+</article>
diff --git a/_layouts/project_single.html b/_layouts/project_single.html
new file mode 100644
index 0000000000000000000000000000000000000000..100f176da332f675c243e8ac6b7ba16ee8b54305
--- /dev/null
+++ b/_layouts/project_single.html
@@ -0,0 +1,15 @@
+---
+layout: default
+---
+<article class="post">
+
+  <header class="post-header">
+    <h1 class="post-title">{{ page.title }}</h1>
+    <hr />
+  </header>
+
+  <div class="post-content">
+    {{ content }}
+  </div>
+
+</article>
diff --git a/_project/cool-project.md b/_project/cool-project.md
new file mode 100644
index 0000000000000000000000000000000000000000..2cca7cb5fb507442e26d5b791b1cb72c617ad0d3
--- /dev/null
+++ b/_project/cool-project.md
@@ -0,0 +1,5 @@
+---
+layout: project_single
+title:  "Cool Project"
+---
+Just a demo text for now, which signifies there is lot of scope for improvement.
\ No newline at end of file
diff --git a/projects.md b/projects.md
new file mode 100644
index 0000000000000000000000000000000000000000..f1295a87d710f72aae1c02acaa29807c6b8ac579
--- /dev/null
+++ b/projects.md
@@ -0,0 +1,7 @@
+---
+layout: project
+title: Projects
+permalink: /projects/
+---
+
+Few of my projects. Currently doing more in Android, NodeJS.
\ No newline at end of file
diff --git a/static/css/main.css b/static/css/main.css
index ed5ec619f6747b955cacfca942fc475cb5a24cf8..bc90d766dead6063608019d76342583ae82b1649 100755
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -193,3 +193,20 @@ div.col-sm-3 img#about {
 .PageNavigation .prev {
     text-align: left;
 }
+
+.social{
+    display: block;
+    margin: 10px 0;
+}
+.social ul {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+}
+.social ul li {
+    display: inline-block;
+    margin: 0 5px;
+}
+.social li a {
+    font-size: 16px;
+}
diff --git a/static/css/projects.css b/static/css/projects.css
new file mode 100644
index 0000000000000000000000000000000000000000..68098831a7382688db82b0f1f9e1beab243216b9
--- /dev/null
+++ b/static/css/projects.css
@@ -0,0 +1,71 @@
+/**
+ * //////////////////////////////////
+ * Project Elements
+ * //////////////////////////////////
+ */
+.project-outer {
+    display: inline-block;
+    width: 30%;
+    vertical-align: top;
+    margin: 0 10px;
+}
+.project-img img {
+    width: 100%;
+}
+h3.project-headlines {
+    margin: 5px 0;
+    font-size: 20px;
+    border-bottom: 1px #EEE solid;
+}
+span.tags {
+    font-size: 10px;
+    border-bottom: 1px #888 dotted;
+    margin: 0 5px;
+}
+span.tags:first-child{ margin-left: 0; }
+span.tags:last-child{ margin-right: 0; }
+
+.project-footer {
+    clear: both;
+    display: inline-block;
+    width: 100%;
+}
+.project-footer .project-link {
+    display: inline-block;
+    position: relative;
+    float: left;
+}
+.project-footer .project-timeline {
+    display: inline-block;
+    position: relative;
+    float: right;
+    font-size: 13px;
+    font-style: italic;
+}
+.project-inner > a {
+    display: block;
+}
+.project-img {
+    width: 230px;
+    height: 200px;
+    display: block;
+    background-size: cover;
+    background-repeat: no-repeat;
+    background-position: center center;
+}
+/** Project Tag Filters **/
+.tag-group{
+    margin: 0 0 25px 0;
+}
+span.tag-cloud {
+    margin: 0 2px;
+    cursor: pointer;
+    font-size: 75%;
+    padding: .2em .6em .3em;
+    font-weight: 700;
+    display: inline;
+}
+.tag-cloud.active{
+    background: #ccc;
+}
+.project-item.not-show{ display: none; }
\ No newline at end of file
diff --git a/static/css/thickbox.css b/static/css/thickbox.css
new file mode 100644
index 0000000000000000000000000000000000000000..7f2b61559c3900e1402b1725a00445e13264bc99
--- /dev/null
+++ b/static/css/thickbox.css
@@ -0,0 +1,163 @@
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+*{padding: 0; margin: 0;}
+
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_window {
+	font: 12px Arial, Helvetica, sans-serif;
+	color: #333333;
+}
+
+#TB_secondLine {
+	font: 10px Arial, Helvetica, sans-serif;
+	color:#666666;
+}
+
+#TB_window a:link {color: #666666;}
+#TB_window a:visited {color: #666666;}
+#TB_window a:hover {color: #000;}
+#TB_window a:active {color: #666666;}
+#TB_window a:focus{color: #666666;}
+
+/* ----------------------------------------------------------------------------------------------------------------*/
+/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/
+/* ----------------------------------------------------------------------------------------------------------------*/
+#TB_overlay {
+	position: fixed;
+	z-index:100;
+	top: 0px;
+	left: 0px;
+	height:100%;
+	width:100%;
+}
+
+.TB_overlayMacFFBGHack {background: url(/static/img/macFFBgHack.png) repeat;}
+.TB_overlayBG {
+	background-color:#000;
+	filter:alpha(opacity=75);
+	-moz-opacity: 0.75;
+	opacity: 0.75;
+}
+
+* html #TB_overlay { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_window {
+	position: fixed;
+	background: #ffffff;
+	z-index: 102;
+	color:#000000;
+	display:none;
+	border: 4px solid #525252;
+	text-align:left;
+	top:50%;
+	left:50%;
+}
+
+* html #TB_window { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_window img#TB_Image {
+	display:block;
+	margin: 15px 0 0 15px;
+	border-right: 1px solid #ccc;
+	border-bottom: 1px solid #ccc;
+	border-top: 1px solid #666;
+	border-left: 1px solid #666;
+}
+
+#TB_caption{
+	height:25px;
+	padding:7px 30px 10px 25px;
+	float:left;
+}
+
+#TB_closeWindow{
+	height:25px;
+	padding:11px 25px 10px 0;
+	float:right;
+}
+
+#TB_closeAjaxWindow{
+	padding:7px 10px 5px 0;
+	margin-bottom:1px;
+	text-align:right;
+	float:right;
+}
+
+#TB_ajaxWindowTitle{
+	float:left;
+	padding:7px 0 5px 10px;
+	margin-bottom:1px;
+}
+
+#TB_title{
+	background-color:#e8e8e8;
+	height:27px;
+}
+
+#TB_ajaxContent{
+	clear:both;
+	padding:2px 15px 15px 15px;
+	overflow:auto;
+	text-align:left;
+	line-height:1.4em;
+}
+
+#TB_ajaxContent.TB_modal{
+	padding:15px;
+}
+
+#TB_ajaxContent p{
+	padding:5px 0px 5px 0px;
+}
+
+#TB_load{
+	position: fixed;
+	display:none;
+	height:13px;
+	width:208px;
+	z-index:103;
+	top: 50%;
+	left: 50%;
+	margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */
+}
+
+* html #TB_load { /* ie6 hack */
+position: absolute;
+margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
+}
+
+#TB_HideSelect{
+	z-index:99;
+	position:fixed;
+	top: 0;
+	left: 0;
+	background-color:#fff;
+	border:none;
+	filter:alpha(opacity=0);
+	-moz-opacity: 0;
+	opacity: 0;
+	height:100%;
+	width:100%;
+}
+
+* html #TB_HideSelect { /* ie6 hack */
+     position: absolute;
+     height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
+}
+
+#TB_iframeContent{
+	clear:both;
+	border:none;
+	margin-bottom:-1px;
+	margin-top:1px;
+	_margin-bottom:1px;
+}
diff --git a/static/img/loadingAnimation.gif b/static/img/loadingAnimation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..82290f48334c81272ff5991962951758137a08ba
Binary files /dev/null and b/static/img/loadingAnimation.gif differ
diff --git a/static/img/macFFBgHack.png b/static/img/macFFBgHack.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c
Binary files /dev/null and b/static/img/macFFBgHack.png differ
diff --git a/static/js/projects.js b/static/js/projects.js
new file mode 100644
index 0000000000000000000000000000000000000000..3587591117728c3faba6db58df6b75f6e8e8e051
--- /dev/null
+++ b/static/js/projects.js
@@ -0,0 +1,41 @@
+(function($){
+	$(document).ready(function(){
+		$(document).on('click','.tag-filter',function(){
+			var $this = $(this);
+			
+			$('span.tag-filter').removeClass("active");
+			$this.addClass("active");
+
+
+			$('.tag-group').children().each(function(){
+				if( $(this).data('tag') ==  $this.data('tag')){
+					$(this).addClass("active");
+				}
+			});
+
+			if( $(this).hasClass('all'))
+				$('.project-item').showAll();
+			else
+				$('.project-item').filterTags( $(this).data('tag') );
+		});
+	});
+
+	$.fn.extend({
+	  filterTags: function(tagName) {
+	  	this.removeClass('not-show');
+	    return this.each(function() {
+	    	var itemTagArray = JSON.parse( $(this).attr('data-tags') );
+			if($.inArray(tagName, itemTagArray) === -1){
+				$(this).addClass('not-show');
+			}
+	    });
+	  },
+	  showAll: function(){
+	  	return this.each(function() {
+			if($(this).hasClass('not-show')){
+				$(this).removeClass('not-show');
+			}
+	    });
+	  }
+	});
+})(jQuery)
\ No newline at end of file
diff --git a/static/js/thickbox-compressed.js b/static/js/thickbox-compressed.js
new file mode 100644
index 0000000000000000000000000000000000000000..ea405f2c9b1c64984fd98bc2fe9aeafc6010fc9c
--- /dev/null
+++ b/static/js/thickbox-compressed.js
@@ -0,0 +1,10 @@
+/*
+ * Thickbox 3 - One Box To Rule Them All.
+ * By Cody Lindley (http://www.codylindley.com)
+ * Copyright (c) 2007 cody lindley
+ * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
+*/
+
+var tb_pathToImage = "/static/img/loadingAnimation.gif";
+
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(o).2S(9(){1u(\'a.18, 3n.18, 3i.18\');1w=1p 1t();1w.L=2H});9 1u(b){$(b).s(9(){6 t=X.Q||X.1v||M;6 a=X.u||X.23;6 g=X.1N||P;19(t,a,g);X.2E();H P})}9 19(d,f,g){3m{3(2t o.v.J.2i==="2g"){$("v","11").r({A:"28%",z:"28%"});$("11").r("22","2Z");3(o.1Y("1F")===M){$("v").q("<U 5=\'1F\'></U><4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}n{3(o.1Y("B")===M){$("v").q("<4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}3(1K()){$("#B").1J("2B")}n{$("#B").1J("2z")}3(d===M){d=""}$("v").q("<4 5=\'K\'><1I L=\'"+1w.L+"\' /></4>");$(\'#K\').2y();6 h;3(f.O("?")!==-1){h=f.3l(0,f.O("?"))}n{h=f}6 i=/\\.2s$|\\.2q$|\\.2m$|\\.2l$|\\.2k$/;6 j=h.1C().2h(i);3(j==\'.2s\'||j==\'.2q\'||j==\'.2m\'||j==\'.2l\'||j==\'.2k\'){1D="";1G="";14="";1z="";1x="";R="";1n="";1r=P;3(g){E=$("a[@1N="+g+"]").36();25(D=0;((D<E.1c)&&(R===""));D++){6 k=E[D].u.1C().2h(i);3(!(E[D].u==f)){3(1r){1z=E[D].Q;1x=E[D].u;R="<1e 5=\'1X\'>&1d;&1d;<a u=\'#\'>2T &2R;</a></1e>"}n{1D=E[D].Q;1G=E[D].u;14="<1e 5=\'1U\'>&1d;&1d;<a u=\'#\'>&2O; 2N</a></1e>"}}n{1r=1b;1n="1t "+(D+1)+" 2L "+(E.1c)}}}S=1p 1t();S.1g=9(){S.1g=M;6 a=2x();6 x=a[0]-1M;6 y=a[1]-1M;6 b=S.z;6 c=S.A;3(b>x){c=c*(x/b);b=x;3(c>y){b=b*(y/c);c=y}}n 3(c>y){b=b*(y/c);c=y;3(b>x){c=c*(x/b);b=x}}13=b+30;1a=c+2G;$("#8").q("<a u=\'\' 5=\'1L\' Q=\'1o\'><1I 5=\'2F\' L=\'"+f+"\' z=\'"+b+"\' A=\'"+c+"\' 23=\'"+d+"\'/></a>"+"<4 5=\'2D\'>"+d+"<4 5=\'2C\'>"+1n+14+R+"</4></4><4 5=\'2A\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4>");$("#Z").s(G);3(!(14==="")){9 12(){3($(o).N("s",12)){$(o).N("s",12)}$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1D,1G,g);H P}$("#1U").s(12)}3(!(R==="")){9 1i(){$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1z,1x,g);H P}$("#1X").s(1i)}o.1h=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}n 3(I==3k){3(!(R=="")){o.1h="";1i()}}n 3(I==3j){3(!(14=="")){o.1h="";12()}}};16();$("#K").C();$("#1L").s(G);$("#8").r({Y:"T"})};S.L=f}n{6 l=f.2r(/^[^\\?]+\\??/,\'\');6 m=2p(l);13=(m[\'z\']*1)+30||3h;1a=(m[\'A\']*1)+3g||3f;W=13-30;V=1a-3e;3(f.O(\'2j\')!=-1){1E=f.1B(\'3d\');$("#15").C();3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4></4><U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\' > </U>")}n{$("#B").N();$("#8").q("<U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\'> </U>")}}n{3($("#8").r("Y")!="T"){3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\'>1l</a> 1k 1j 1s</4></4><4 5=\'F\' J=\'z:"+W+"p;A:"+V+"p\'></4>")}n{$("#B").N();$("#8").q("<4 5=\'F\' 3c=\'3b\' J=\'z:"+W+"p;A:"+V+"p;\'></4>")}}n{$("#F")[0].J.z=W+"p";$("#F")[0].J.A=V+"p";$("#F")[0].3a=0;$("#1H").11(d)}}$("#Z").s(G);3(f.O(\'37\')!=-1){$("#F").q($(\'#\'+m[\'26\']).1T());$("#8").24(9(){$(\'#\'+m[\'26\']).q($("#F").1T())});16();$("#K").C();$("#8").r({Y:"T"})}n 3(f.O(\'2j\')!=-1){16();3($.1q.35){$("#K").C();$("#8").r({Y:"T"})}}n{$("#F").34(f+="&1y="+(1p 33().32()),9(){16();$("#K").C();1u("#F a.18");$("#8").r({Y:"T"})})}}3(!m[\'1A\']){o.21=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}}}}31(e){}}9 1m(){$("#K").C();$("#8").r({Y:"T"})}9 G(){$("#2Y").N("s");$("#Z").N("s");$("#8").2X("2W",9(){$(\'#8,#B,#1F\').2V("24").N().C()});$("#K").C();3(2t o.v.J.2i=="2g"){$("v","11").r({A:"1Z",z:"1Z"});$("11").r("22","")}o.1h="";o.21="";H P}9 16(){$("#8").r({2U:\'-\'+20((13/2),10)+\'p\',z:13+\'p\'});3(!(1V.1q.2Q&&1V.1q.2P<7)){$("#8").r({38:\'-\'+20((1a/2),10)+\'p\'})}}9 2p(a){6 b={};3(!a){H b}6 c=a.1B(/[;&]/);25(6 i=0;i<c.1c;i++){6 d=c[i].1B(\'=\');3(!d||d.1c!=2){39}6 e=2a(d[0]);6 f=2a(d[1]);f=f.2r(/\\+/g,\' \');b[e]=f}H b}9 2x(){6 a=o.2M;6 w=1S.2o||1R.2o||(a&&a.1Q)||o.v.1Q;6 h=1S.1P||1R.1P||(a&&a.2n)||o.v.2n;1O=[w,h];H 1O}9 1K(){6 a=2K.2J.1C();3(a.O(\'2I\')!=-1&&a.O(\'3o\')!=-1){H 1b}}',62,211,'|||if|div|id|var||TB_window|function||||||||||||||else|document|px|append|css|click||href|body||||width|height|TB_overlay|remove|TB_Counter|TB_TempArray|TB_ajaxContent|tb_remove|return|keycode|style|TB_load|src|null|unbind|indexOf|false|title|TB_NextHTML|imgPreloader|block|iframe|ajaxContentH|ajaxContentW|this|display|TB_closeWindowButton||html|goPrev|TB_WIDTH|TB_PrevHTML|TB_iframeContent|tb_position||thickbox|tb_show|TB_HEIGHT|true|length|nbsp|span|Math|onload|onkeydown|goNext|Esc|or|close|tb_showIframe|TB_imageCount|Close|new|browser|TB_FoundURL|Key|Image|tb_init|name|imgLoader|TB_NextURL|random|TB_NextCaption|modal|split|toLowerCase|TB_PrevCaption|urlNoQuery|TB_HideSelect|TB_PrevURL|TB_ajaxWindowTitle|img|addClass|tb_detectMacXFF|TB_ImageOff|150|rel|arrayPageSize|innerHeight|clientWidth|self|window|children|TB_prev|jQuery|frameborder|TB_next|getElementById|auto|parseInt|onkeyup|overflow|alt|unload|for|inlineId||100||unescape|1000|round|hspace|TB_closeAjaxWindow|TB_title|undefined|match|maxHeight|TB_iframe|bmp|gif|png|clientHeight|innerWidth|tb_parseQuery|jpeg|replace|jpg|typeof|which|keyCode|event|tb_getPageSize|show|TB_overlayBG|TB_closeWindow|TB_overlayMacFFBGHack|TB_secondLine|TB_caption|blur|TB_Image|60|tb_pathToImage|mac|userAgent|navigator|of|documentElement|Prev|lt|version|msie|gt|ready|Next|marginLeft|trigger|fast|fadeOut|TB_imageOff|hidden||catch|getTime|Date|load|safari|get|TB_inline|marginTop|continue|scrollTop|TB_modal|class|TB_|45|440|40|630|input|188|190|substr|try|area|firefox'.split('|'),0,{}))
\ No newline at end of file
diff --git a/static/projects/placeholder.jpg b/static/projects/placeholder.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..241b755030dcaf0f950d9b22b9465ab3a5393cb1
Binary files /dev/null and b/static/projects/placeholder.jpg differ