[
  {
    "path": ".gitignore",
    "content": "# Created by http://www.gitignore.io\n\n### OSX ###\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n\n# Thumbnails\n._*\n\n# Files that might appear on external disk\n.Spotlight-V100\n.Trashes\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\nCNAME\n\n_site\nnode_modules\n"
  },
  {
    "path": ".ruby-version",
    "content": "2.6.2"
  },
  {
    "path": ".travis.yml",
    "content": "language: ruby\n\ninstall: true\nscript: ./scripts/test-PR.sh\nbranches:\n  only:\n    - master"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\n## New Issues\n\n  1. Check to see if an existing Issue or Pull Request exists!\n  1. Only one submission per Issue\n\n## New Pull Requests\n  1. Check to see if an existing Issue or Pull Request exists!\n  1. One submission per Pull Request\n  <!-- 1. If we've queued up a site [with an existing Issue](https://github.com/trek/beautiful-open/issues?q=author%3Atrek)\n     please don't open a Pull Request. Reviewing a Pull Request to make sure it meets\n     the rest of these requirements takes about as long as creating from scratch -->\n  1. Please name your file `xxxx-xx-xx-<name>.md` where `<name>` is\n     replaced with the name of your site, e.g. `xxxx-xx-xx-emberjs.md`.\n     I will supply the date when publishing the site.\n  1. Set your browser size to **1000x800** at 90% zoom\n  1. Make sure the screenshot is **1000x800** and please double check that\n     everything looks good before submitting.\n  1. Run the screenshot through an image optimizer like\n     [ImageOptim](https://imageoptim.com/) or [TinyPNG](https://tinypng.com/)\n     before including it. This will help keep the website fast and the repository\n     small as possible.\n\nNot all submissions will be accepted. This is just the nature of curation. Please\ndon't ask me to explain _why_ I decided not to include a site on the list: Gituhb\nIssues aren't a great venue for design critique.\n"
  },
  {
    "path": "Gemfile",
    "content": "source 'https://rubygems.org'\n\ngem \"jekyll\"\ngem \"jekyll-paginate-v2\""
  },
  {
    "path": "LICENSE",
    "content": "MIT license\n\nCopyright (c) 2014 Trek Glowacki\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# [Beautiful Open](http://beautifulopen.com)\n\nA list of handsome sites for open source software.\n\n## Submissions\nWe don't accept all submissions.  All submissions must follow the instructions\non the *How to submit* section below. We reserve the right to reject any\nsubmission. Submissions with inappropriate content will not be accepted.\n\n### How to submit\nTo submit a site suggestions, [open an issue](https://github.com/trek/beautiful-open/issues/new)\nor create a pull request.\n\nPlease check the [`CONTRIBUTING.md` file](./CONTRIBUTING.md) for additional requiremnts.\n\n### Running the site locally\n```\n$ gem install jekyll\n$ git clone https://github.com/trek/beautiful-open.git\n$ cd beautiful-open\n$ jekyll serve --watch\n```\n\n"
  },
  {
    "path": "_config.yml",
    "content": "# Permalinks\npermalink: pretty\n\n# Settings\nmarkdown:  kramdown\ndestination: ./_site\nexclude: [\"README.md\"]\npagination:\n  enabled: true\n  per_page: 10\n  sort_reverse: true\nencoding: UTF-8\nfuture: false\nname: Beautiful Open\nurl: https://beautifulopen.com\ndescription: \"Handsome sites for open source\"\n\nplugins:\n  - jekyll-paginate-v2"
  },
  {
    "path": "_includes/analytics.html",
    "content": "<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', 'UA-53564683-1', 'auto');\n  ga('send', 'pageview');\n\n</script>\n"
  },
  {
    "path": "_includes/navigation.html",
    "content": "<ul class=\"list-unstyled\">\n  <li class=\"nav-item\">\n    <a class=\"nav-link{% if page.title == \"Home\" %} nav-link-active{% endif %}\" href=\"/\">Home</a>\n  </li>\n\n  {% assign pages_list = site.pages %}\n  {% for node in pages_list %}\n    {% if node.title != null %}\n      {% if node.layout == \"page\" %}\n        <li class=\"nav-item\">\n          <a class=\"nav-link{% if page.url == node.url %} nav-link-active{% endif %}\" href=\"{{ node.url }}\">\n            {{ node.title }}\n          </a>\n        </li>\n      {% endif %}\n    {% endif %}\n  {% endfor %}\n  <li class=\"nav-item\">\n    <a class=\"nav-link\" href=\"/about/\">Submit a site</a>\n  </li>\n</ul>\n\n<hr class=\"main-sidebar-hr\">\n\n<ul class=\"list-unstyled\">\n  <li class=\"nav-item\">\n    <a class=\"nav-link\" href=\"https://twitter.com/Beautiful_Open\">Twitter</a>\n  </li>\n  <li class=\"nav-item\">\n    <a class=\"nav-link\" href=\"/feed.xml\">RSS</a>\n  </li>\n</ul>\n"
  },
  {
    "path": "_includes/pagination.html",
    "content": "<div class=\"paginator\">\n  {% if paginator.previous_page %}\n    {% if paginator.page == 2 %}\n      <a href=\"/\" class=\"paginate newer\">Newer</a>\n    {% else %}\n      <a href=\"/page{{paginator.previous_page}}\" class=\"paginate newer\">Newer</a>\n    {% endif %}\n  {% else %}\n    <span class=\"paginate newer\">Newer</span>\n  {% endif %}\n\n  {% if paginator.next_page %}\n    <a href=\"/page{{paginator.next_page}}\" class=\"paginate older\">Older</a>\n  {% else %}\n    <span class=\"paginate older\">Older</span>\n  {% endif %}\n</div>\n"
  },
  {
    "path": "_includes/search.html",
    "content": "<script type=\"text/javascript\">\n  (function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){\n  (w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);\n  e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);\n  })(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st');\n\n  _st('install','iCVyMCpXqhWgmr-xorwW','2.0.0');\n</script>\n"
  },
  {
    "path": "_layouts/default.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <meta name=\"description\" content=\"{{ site.description }}\">\n  {% if page.title == \"Home\" %}\n    <title>Beautiful Open</title>\n  {% else if %}\n    <title>{{ page.title }} &middot; Beautiful Open</title>\n    <meta class='swiftype' name='image' data-type='enum' content='{{site.url}}/screenshots/{{page.image}}' />\n  {% endif %}\n\n\n  <meta property=\"og:title\" content=\"Beautiful Open\"/>\n  <meta property=\"og:type\" content=\"website\"/>\n  <meta property=\"og:url\" content=\"http://beautifulopen.com/\"/>\n  <meta property=\"og:image\" content=\"{{ site.url }}/img/beautiful-open.png\"/>\n  <meta property=\"og:site_name\" content=\"Beautiful Open\"/>\n\n  <!-- Twitter cards -->\n  <meta name=\"twitter:site\" content=\"@beautiful_open\">\n  <meta name=\"twitter:creator\" content=\"@beautiful_open\">\n  <meta name=\"twitter:title\" content=\"{{ page.title }}\">\n  <meta name=\"twitter:description\" content=\"Today's beautiful open source site\">\n\n  {% if page.image %}\n  <meta name=\"twitter:card\" content=\"summary_large_image\">\n  <meta name=\"twitter:image:src\" content=\"{{ site.url }}/screenshots/{{ page.image }}\">\n  <meta name=\"twitter:image:width\" content=\"1000\">\n  <meta name=\"twitter:image:height\" content=\"800\">\n  {% else %}\n  <meta name=\"twitter:card\" content=\"summary\">\n  <meta name=\"twitter:image:src\" content=\"{{ site.title_image }}\">\n  {% endif %}\n\n  <link rel=\"shortcut icon\" href=\"/img/favicon.ico\" />\n  <link rel=\"stylesheet\" href=\"/css/main.css\">\n  <link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"/feed.xml\">\n</head>\n<body>\n  <div class=\"main-sidebar\">\n    <h1><a href=\"/\" class=\"site-name\">Beautiful Open</a></h1>\n    <p class=\"subtitle\">Beautiful sites for Open Source projects.</p>\n    <p class=\"byline\">Hand curated by <a href=\"https://twitter.com/trek\">@trek</a></p>\n\n    <hr class=\"main-sidebar-hr\">\n    <input type=\"text\" class=\"st-default-search-input\" placeholder=\"find something beautiful\">\n    <hr class=\"main-sidebar-hr\">\n    {% include navigation.html %}\n\n    <hr class=\"main-sidebar-hr\">\n  </div>\n  <div class=\"main-container\">\n    {{ content }}\n  </div>\n  {% include analytics.html %}\n  {% include search.html %}\n</body>\n</html>\n"
  },
  {
    "path": "_layouts/page.html",
    "content": "---\nlayout: default\n---\n\n<h2>{{ page.title }}</h2>\n\n<div class=\"post\">\n  <img src=\"/screenshots/{{page.image}}\">\n  {{ content }}\n</div>\n"
  },
  {
    "path": "_layouts/post.html",
    "content": "---\nlayout: default\n---\n\n<div class=\"posts\">\n  <div class=\"post-description\">\n    <h3 class=\"post-description-title\"><a href=\"{{ page.url }}\" class=\"post-description-link\">{{ page.title }}</a></h3>\n    <p class=\"post-description-date\">{{ page.date | date: \"%B %-d, %Y\" }}</p>\n  </div>\n\n  <a href=\"{{ page.source }}\" class=\"screenshot-link\" target=\"_blank\">\n    <div class=\"browser-frame\">\n      <div class=\"browser-top-bar\">\n        <div class=\"browser-button-wrapper\">\n          <div class=\"browser-button\"></div>\n          <div class=\"browser-button\"></div>\n          <div class=\"browser-button\"></div>\n        </div>\n        <div class=\"browser-address\"></div>\n      </div>\n      <div class=\"browser-container\">\n        <img src=\"/screenshots/{{page.image}}\" />\n        {{ page.content }}\n      </div>\n    </div>\n  </a>\n</div>\n"
  },
  {
    "path": "_posts/2014-08-03-bootstrap.md",
    "content": "---\nlayout: post\ntitle: \"Bootstrap\"\nslug: bootstrap\nsource: http://getbootstrap.com\nimage: bootstrap.png\n---\n"
  },
  {
    "path": "_posts/2014-08-03-bower.md",
    "content": "---\nlayout: post\ntitle: \"Bower\"\nslug: bower\nsource: http://bower.io\nimage: bower.png\n---\n"
  },
  {
    "path": "_posts/2014-08-04-browserify.md",
    "content": "---\nlayout: post\ntitle: \"Browserify\"\nslug: browserify\nsource: http://browserify.org/\nimage: browserify.png\n---\n"
  },
  {
    "path": "_posts/2014-08-04-bundler.md",
    "content": "---\nlayout: post\ntitle: \"Bundler\"\nslug: bundler\nsource: http://bundler.io/\nimage: bundler.png\n---\n"
  },
  {
    "path": "_posts/2014-08-04-cordova.md",
    "content": "---\nlayout: post\ntitle: \"Cordova\"\nslug: cordova\nsource: http://cordova.apache.org/\nimage: cordova.png\n---\n"
  },
  {
    "path": "_posts/2014-08-04-couchdb.md",
    "content": "---\nlayout: post\ntitle: \"CouchDB\"\nslug: couchdb\nsource: http://couchdb.apache.org/\nimage: couchdb.png\n---\n"
  },
  {
    "path": "_posts/2014-08-04-discourse.md",
    "content": "---\nlayout: post\ntitle: \"Discourse\"\nslug: discourse\nsource: http://www.discourse.org/\nimage: discourse.png\n---\n"
  },
  {
    "path": "_posts/2014-08-04-docker.md",
    "content": "---\nlayout: post\ntitle: \"Docker\"\nslug: docker\nsource: https://www.docker.com/\nimage: docker.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-elasticsearch.md",
    "content": "---\nlayout: post\ntitle: \"Elasticsearch\"\nslug: elasticsearch\nsource: http://www.elasticsearch.org/\nimage: elasticsearch.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-foundation.md",
    "content": "---\nlayout: post\ntitle: \"Zurb Foundation\"\nslug: foundation\nsource: http://foundation.zurb.com/\nimage: foundation.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-ghost.md",
    "content": "---\nlayout: post\ntitle: \"Ghost\"\nslug: ghost\nsource: https://ghost.org/\nimage: ghost.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-git.md",
    "content": "---\nlayout: post\ntitle: \"Git\"\nslug: git\nsource: http://git-scm.com/\nimage: git.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-grunt.md",
    "content": "---\nlayout: post\ntitle: \"Grunt\"\nslug: grunt\nsource: http://gruntjs.com/\nimage: grunt.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-gulp.md",
    "content": "---\nlayout: post\ntitle: \"gulp.js\"\nslug: gulp\nsource: http://gulpjs.com/\nimage: gulp.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-handlebars.md",
    "content": "---\nlayout: post\ntitle: \"Handlebars\"\nslug: handlebars\nsource: http://handlebarsjs.com/\nimage: handlebars.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-laravel.md",
    "content": "---\nlayout: post\ntitle: \"Laravel\"\nslug: laravel\nsource: http://laravel.com/\nimage: laravel.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-less.md",
    "content": "---\nlayout: post\ntitle: \"Less\"\nslug: less\nsource: http://lesscss.org/\nimage: less.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-marionette.md",
    "content": "---\nlayout: post\ntitle: \"Marionette\"\nslug: marionettejs\nsource: http://marionettejs.com/\nimage: marionette.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-middleman.md",
    "content": "---\nlayout: post\ntitle: \"Middleman\"\nslug: middelman\nsource: http://middlemanapp.com/\nimage: middleman.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-mongodb.md",
    "content": "---\nlayout: post\ntitle: \"mongoDB\"\nslug: mongodb\nsource: http://www.mongodb.org/\nimage: mongodb.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-node.md",
    "content": "---\nlayout: post\ntitle: \"Node.js\"\nslug: node\nsource: http://nodejs.org/\nimage: node.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-papaparse.md",
    "content": "---\nlayout: post\ntitle: \"Papa Parse\"\nslug: papaparse\nsource: http://papaparse.com/\nimage: papaparse.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-react.md",
    "content": "---\nlayout: post\ntitle: \"React\"\nslug: react\nsource: http://facebook.github.io/react/\nimage: react.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-requirejs.md",
    "content": "---\nlayout: post\ntitle: \"RequireJS\"\nslug: requirejs\nsource: http://requirejs.org/\nimage: requirejs.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-rust.md",
    "content": "---\nlayout: post\ntitle: \"Rust\"\nslug: rust\nsource: http://www.rust-lang.org/\nimage: rust.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-sass.md",
    "content": "---\nlayout: post\ntitle: \"Sass\"\nslug: sass\nsource: http://sass-lang.com/\nimage: sass.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-travis.md",
    "content": "---\nlayout: post\ntitle: \"Travis CI\"\nslug: travis\nsource: https://travis-ci.org/\nimage: travis.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-04-yeoman.md",
    "content": "---\nlayout: post\ntitle: \"Yeoman\"\nslug: yeoman\nsource: http://yeoman.io/\nimage: yeoman.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-05-boards.md",
    "content": "---\nlayout: post\ntitle: \"Blimp Boards\"\nslug: boards\nsource: http://boards.blimp.io/\nimage: boards.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-06-homebrew.md",
    "content": "---\nlayout: post\ntitle: \"Homebrew\"\nslug: homebrew\nsource: http://brew.sh/\nimage: homebrew.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-07-consul.md",
    "content": "---\nlayout: post\ntitle: \"Consul\"\nslug: consul\nsource: http://www.consul.io/\nimage: consul.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-08-d3.md",
    "content": "---\nlayout: post\ntitle: \"D3\"\nslug: d3\nsource: http://d3js.org/\nimage: d3.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-09-hugo.md",
    "content": "---\nlayout: post\ntitle: \"Hugo\"\nslug: hugo\nsource: http://hugo.spf13.com/\nimage: hugo.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-10-boxen.md",
    "content": "---\nlayout: post\ntitle: \"Boxen\"\nslug: boxen\nsource: https://boxen.github.com/\nimage: boxen.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-11-vagrant.md",
    "content": "---\nlayout: post\ntitle: \"Vagrant\"\nslug: vagrant\nsource: http://www.vagrantup.com/\nimage: vagrant.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-12-polymer.md",
    "content": "---\nlayout: post\ntitle: \"Polymer\"\nslug: polymer\nsource: http://www.polymer-project.org/\nimage: polymer.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-13-hubot.md",
    "content": "---\nlayout: post\ntitle: \"Hubot\"\nslug: hubot\nsource: https://hubot.github.com/\nimage: hubot.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-14-origami.md",
    "content": "---\nlayout: post\ntitle: \"Origami\"\nslug: origami\nsource: http://facebook.github.io/origami/\nimage: origami.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-15-snap-svg.md",
    "content": "---\nlayout: post\ntitle: \"Snap.svg\"\nslug: snap-svg\nsource: http://snapsvg.io/\nimage: snap-svg.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-16-buckets.md",
    "content": "---\nlayout: post\ntitle: \"Buckets\"\nslug: buckets\nsource: http://buckets.io/\nimage: buckets.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-17-socketio.md",
    "content": "---\nlayout: post\ntitle: \"Socket.io\"\nslug: socketio\nsource: http://socket.io/\nimage: socketio.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-18-bobajs.md",
    "content": "---\nlayout: post\ntitle: \"Boba.js\"\nslug: bobajs\nsource: http://boba.space150.com\nimage: bobajs.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-19-atom.md",
    "content": "---\nlayout: post\ntitle: \"Atom\"\nslug: atom\nsource: https://atom.io/\nimage: atom.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-20-famous.md",
    "content": "---\nlayout: post\ntitle: \"Famo.us\"\nslug: famous\nsource: http://famo.us/\nimage: famous.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-21-ampersandjs.md",
    "content": "---\nlayout: post\ntitle: \"Ampersand.js\"\nslug: ampersandjs\nsource: http://ampersandjs.com/\nimage: ampersandjs.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-22-scala.md",
    "content": "---\nlayout: post\ntitle: \"Scala\"\nslug: scala\nsource: http://www.scala-lang.org/\nimage: scala.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-25-cinematico.md",
    "content": "---\nlayout: post\ntitle: \"Cinematico\"\nslug: cinematico\nsource: http://cinemati.co/\nimage: cinematico.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-26-cake-php.md",
    "content": "---\nlayout: post\ntitle: \"CakePHP\"\nslug: cake-php\nsource: http://cakephp.org/\nimage: cake.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-27-firefox.md",
    "content": "---\nlayout: post\ntitle: \"Firefox\"\nslug: firefox\nsource: https://www.mozilla.org/en-US/firefox/desktop/\nimage: firefox.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-28-hapi.md",
    "content": "---\nlayout: post\ntitle: \"Hapi\"\nslug: hapi\nsource: http://hapijs.com/\nimage: hapi.png\n---\n\n"
  },
  {
    "path": "_posts/2014-08-29-play.md",
    "content": "---\nlayout: post\ntitle: \"Play\"\nslug: play\nsource: https://www.playframework.com/\nimage: play.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-02-haml.md",
    "content": "---\nlayout: post\ntitle: \"Haml\"\nslug: haml\nsource: http://haml.info/\nimage: haml.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-03-chart-js.md",
    "content": "---\nlayout: post\ntitle: \"Chart.js\"\nslug: chart-js\nsource: http://www.chartjs.org/\nimage: chartjs.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-04-pure-css.md",
    "content": "---\nlayout: post\ntitle: \"Pure\"\nslug: pure-js\nsource: http://purecss.io/\nimage: purecss.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-05-kitematic.md",
    "content": "---\nlayout: post\ntitle: \"Kitematic\"\nslug: kitematic\nsource: https://kitematic.com/\nimage: kitematic.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-08-eslint.md",
    "content": "---\nlayout: post\ntitle: \"ESLint\"\nslug: eslint\nsource: http://eslint.org/\nimage: eslint.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-09-batman-js.md",
    "content": "---\nlayout: post\ntitle: \"Batman.js\"\nslug: batman-js\nsource: http://batmanjs.org/\nimage: batmanjs.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-10-raw.md",
    "content": "---\nlayout: post\ntitle: \"RAW\"\nslug: raw\nsource: http://raw.densitydesign.org/\nimage: raw.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-11-monit.md",
    "content": "---\nlayout: post\ntitle: \"Monit\"\nslug: monit\nsource: http://mmonit.com/monit/\nimage: monit.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-12-derby.md",
    "content": "---\nlayout: post\ntitle: \"Derbyjs\"\nslug: derby\nsource: http://derbyjs.com/\nimage: derby.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-15-animate-css.md",
    "content": "---\nlayout: post\ntitle: \"Animate.css\"\nslug: animate-css\nsource: http://daneden.github.io/animate.css/\nimage: animate-css.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-22-brackets.md",
    "content": "---\nlayout: post\ntitle: \"Brackets\"\nslug: brackets\nsource: http://brackets.io/\nimage: brackets.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-23-suit-css.md",
    "content": "---\nlayout: post\ntitle: \"SUIT CSS\"\nslug: suit-css\nsource: http://suitcss.github.io/\nimage: suit-css.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-24-rune-audio.md",
    "content": "---\nlayout: post\ntitle: \"RuneAudio\"\nslug: runeaudio\nsource: http://www.runeaudio.com/\nimage: runeaudio.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-26-lesshat.md",
    "content": "---\nlayout: post\ntitle: \"Less Hat\"\nslug: less-hat\nsource: http://lesshat.madebysource.com/\nimage: lesshat.png\n---\n\n"
  },
  {
    "path": "_posts/2014-09-29-bourbon.md",
    "content": "---\nlayout: post\ntitle: \"Bourbon\"\nslug: bourbon\nsource: http://www.bourbon.io/\nimage: bourbon.png\n---\n"
  },
  {
    "path": "_posts/2014-09-30-conversejs.md",
    "content": "---\nlayout: post\ntitle: \"Converse.js\"\nslug: converse-js\nsource: https://conversejs.org/\nimage: conversejs.png\n---\n\n\n"
  },
  {
    "path": "_posts/2014-10-13-packer.md",
    "content": "---\nlayout: post\ntitle: \"Packer\"\nslug: packer-io\nsource: http://www.packer.io/\nimage: packer.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-14-jeet.md",
    "content": "---\nlayout: post\ntitle: \"Jeet\"\nslug: jeet\nsource: http://jeet.gs/\nimage: jeet.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-15-midnight-js.md",
    "content": "---\nlayout: post\ntitle: \"Midnight.js\"\nslug: midnight-js\nsource: http://aerolab.github.io/midnight.js/\nimage: midnight-js.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-16-taiga.md",
    "content": "---\nlayout: post\ntitle: \"Taiga\"\nslug: taiga\nsource: http://taiga.io\nimage: taiga.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-17-refills.md",
    "content": "---\nlayout: post\ntitle: \"Refills\"\nslug: refills\nsource: http://refills.bourbon.io/\nimage: refills.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-20-l20n.md",
    "content": "---\nlayout: post\ntitle: \"L20n\"\nslug: l20n\nsource: http://l20n.org/\nimage: l20n.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-24-scrapy.md",
    "content": "---\nlayout: post\ntitle: \"Scrapy\"\nslug: scrapy\nsource: http://scrapy.org/\nimage: scrapy.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-27-dimensions.md",
    "content": "---\nlayout: post\ntitle: \"Dimensions\"\nslug: dimensions\nsource: http://felixniklas.com/dimensions/\nimage: dimensions.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-28-flatdoc.md",
    "content": "---\nlayout: post\ntitle: \"Flatdoc\"\nslug: flatdoc\nsource: http://ricostacruz.com/flatdoc/\nimage: flatdoc.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-29-pagekit.md",
    "content": "---\nlayout: post\ntitle: \"Pagekit\"\nslug: pagekit\nsource: http://www.pagekit.com/\nimage: pagekit.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-30-typescript.md",
    "content": "---\nlayout: post\ntitle: \"TypeScript\"\nslug: typescript\nsource: http://www.typescriptlang.org/\nimage: typescript.png\n---\n\n"
  },
  {
    "path": "_posts/2014-10-31-nightmare.md",
    "content": "---\nlayout: post\ntitle: \"Nightmare\"\nslug: nightmare\nsource: http://www.nightmarejs.org/\nimage: nightmare.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-03-lychee.md",
    "content": "---\nlayout: post\ntitle: \"Lychee\"\nslug: lychee\nsource: http://lychee.electerious.com/\nimage: lychee.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-04-vue.md",
    "content": "---\nlayout: post\ntitle: \"Vue.js\"\nslug: vue\nsource: http://vuejs.org/\nimage: vue.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-05-momentjs.md",
    "content": "---\nlayout: post\ntitle: \"Moment.js\"\nslug: momentjs\nsource: http://momentjs.com/\nimage: momentjs.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-06-csstyle.md",
    "content": "---\nlayout: post\ntitle: \"csstyle\"\nslug: csstyle\nsource: http://www.csstyle.io/\nimage: csstyle.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-07-libsass.md",
    "content": "---\nlayout: post\ntitle: \"LibSass\"\nslug: libsass\nsource: http://libsass.org/\nimage: libsass.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-10-openf2.md",
    "content": "---\nlayout: post\ntitle: \"OpenF2\"\nslug: openf2\nsource: http://www.openF2.org\nimage: openf2.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-11-dewey.md",
    "content": "---\nlayout: post\ntitle: \"Dewey\"\nslug: dewey\nsource: http://deweyapp.io/\nimage: dewey.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-12-bitters.md",
    "content": "---\nlayout: post\ntitle: \"Bitters\"\nslug: bitters\nsource: http://bitters.bourbon.io\nimage: bitters.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-13-wami-map.md",
    "content": "---\nlayout: post\ntitle: \"Wami Map\"\nslug: wami-map\nsource: http://map.wami.it/\nimage: wami-map.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-17-hoodie.md",
    "content": "---\nlayout: post\ntitle: \"Hoodie\"\nslug: hoodie\nsource: http://hood.ie\nimage: hood.ie.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-18-sigma.md",
    "content": "---\nlayout: post\ntitle: \"Sigma\"\nslug: sigma\nsource: http://sigmajs.org/\nimage: sigma.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-19-lets-encrypt.md",
    "content": "---\nlayout: post\ntitle: \"Let's Encrypt\"\nslug: lets-encrypt\nsource: https://letsencrypt.org/\nimage: lets-encrypt.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-20-rubygems.md",
    "content": "---\nlayout: post\ntitle: \"RubyGems\"\nslug: rubygems\nsource: https://rubygems.org/\nimage: rubygems.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-21-kill-bill.md",
    "content": "---\nlayout: post\ntitle: \"Kill Bill\"\nslug: kill-bill\nsource: https://killbill.io/\nimage: kill-bill.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-24-semantic-ui.md",
    "content": "---\nlayout: post\ntitle: \"Semantic UI\"\nslug: semantic-ui\nsource: http://semantic-ui.com/\nimage: semantic-ui.png\n---\n\n"
  },
  {
    "path": "_posts/2014-11-25-nemex-io.md",
    "content": "---\nlayout: post\ntitle: \"nemex\"\nslug: nemex\nsource: http://nemex.io/\nimage: nemex.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-01-materialize-css.md",
    "content": "---\nlayout: post\ntitle: \"Materialize\"\nslug: materialize-csss\nsource: http://materializecss.com/\nimage: materialize-css.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-02-coreos.md",
    "content": "---\nlayout: post\ntitle: \"CoreOS\"\nslug: coreos\nsource: https://coreos.com/\nimage: coreos.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-03-dat-data.md",
    "content": "---\nlayout: post\ntitle: \"Dat\"\nslug: dat\nsource: http://dat-data.com/\nimage: dat.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-04-foundation-for-apps.md",
    "content": "---\nlayout: post\ntitle: \"Foundation for Apps\"\nslug: foundationf-for-apps\nsource: http://foundation.zurb.com/apps/\nimage: foundation-for-apps.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-08-skyline.md",
    "content": "---\nlayout: post\ntitle: \"Skyline\"\nslug: skyline\nsource: http://skyline.is/\nimage: skyline.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-09-greenscreen.md",
    "content": "---\nlayout: post\ntitle: \"Greenscreen\"\nslug: greenscreen\nsource: http://greenscreen.io/\nimage: greenscreen.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-11-smoothstate.md",
    "content": "---\nlayout: post\ntitle: \"smoothState.js\"\nslug: smoothstate\nsource: http://weblinc.github.io/jquery.smoothState.js/\nimage: smoothstate.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-16-django.md",
    "content": "---\nlayout: post\ntitle: \"Django\"\nslug: django\nsource: https://www.djangoproject.com/\nimage: django.png\n---\n\n"
  },
  {
    "path": "_posts/2014-12-17-aurora.md",
    "content": "---\nlayout: post\ntitle: \"Aurora\"\nslug: aurora\nsource: http://aurora.incubator.apache.org/\nimage: aurora.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-05-fpsmeter.md",
    "content": "---\nlayout: post\ntitle: \"FPSMeter\"\nslug: fpsmeter\nsource: http://darsa.in/fpsmeter/\nimage: fpsmeter.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-06-underline-js.md",
    "content": "---\nlayout: post\ntitle: \"underline.js\"\nslug: underline-js\nsource: http://wentin.github.io/underlineJS/\nimage: underline-js.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-07-ropensci.md",
    "content": "---\nlayout: post\ntitle: \"rOpenSci\"\nslug: ropensci\nsource: http://ropensci.org/\nimage: ropensci.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-08-mean-io.md",
    "content": "---\nlayout: post\ntitle: \"Mean.io\"\nslug: mean-io\nsource: http://mean.io/\nimage: mean-io.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-09-sublime-pacakge-control.md",
    "content": "---\nlayout: post\ntitle: \"Sublime Package Control\"\nslug: sublime-package-control\nsource: https://packagecontrol.io/\nimage: sublime-package-control.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-12-flashlight.md",
    "content": "---\nlayout: post\ntitle: \"Flashlight\"\nslug: flashlight\nsource: http://flashlight.nateparrott.com/\nimage: flashlight.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-13-6to5.md",
    "content": "---\nlayout: post\ntitle: \"6to5\"\nslug: 6to5\nsource: https://6to5.org/\nimage: 6to5.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-14-fireshell.md",
    "content": "---\nlayout: post\ntitle: \"Fireshell\"\nslug: fireshell\nsource: http://getfireshell.com/\nimage: fireshell.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-15-framework7.md",
    "content": "---\nlayout: post\ntitle: \"Framework7\"\nslug: framework7\nsource: http://www.idangero.us/framework7/\nimage: framework7.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-16-neat.md",
    "content": "---\nlayout: post\ntitle: \"Neat\"\nslug: neat\nsource: http://neat.bourbon.io\nimage: neat.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-20-formatjs.md",
    "content": "---\nlayout: post\ntitle: \"FormatJS\"\nslug: formatjs\nsource: http://formatjs.io/\nimage: formatjs.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-22-immutable.md",
    "content": "---\nlayout: post\ntitle: \"Immutable\"\nslug: immutable\nsource: http://facebook.github.io/immutable-js/\nimage: immutable.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-23-json-resume.md",
    "content": "---\nlayout: post\ntitle: \"JSON Resume\"\nslug: json-resume\nsource: https://jsonresume.org/\nimage: json-resume.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-27-aurelia.md",
    "content": "---\nlayout: post\ntitle: \"Aurelia\"\nslug: aurelia\nsource: http://aurelia.io/\nimage: aurelia.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-29-express.md",
    "content": "---\nlayout: post\ntitle: \"Express\"\nslug: express\nsource: http://expressjs.com/\nimage: express.png\n---\n\n"
  },
  {
    "path": "_posts/2015-01-30-sentry.md",
    "content": "---\nlayout: post\ntitle: \"Sentry\"\nslug: sentry\nsource: https://getsentry.com/\nimage: sentry.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-02-myth.md",
    "content": "---\nlayout: post\ntitle: \"Myth\"\nslug: myth\nsource: http://www.myth.io/\nimage: myth.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-03-nunchuck-js.md",
    "content": "---\nlayout: post\ntitle: \"Nunchuck.js\"\nslug: nunchuck-js\nsource: http://nunchuckjs.com/\nimage: nunchuck-js.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-04-jquery-face-detection.md",
    "content": "---\nlayout: post\ntitle: \"jQuery Face Detection\"\nslug: jquery-face-detection\nsource: http://facedetection.jaysalvat.com\nimage: jqueryfacedetection.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-05-prometheus.md",
    "content": "---\nlayout: post\ntitle: \"Prometheus\"\nslug: prometheus\nsource: http://prometheus.io/\nimage: prometheus.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-06-httpster.md",
    "content": "---\nlayout: post\ntitle: \"httpster\"\nslug: httpster\nsource: http://simbco.github.io/httpster/\nimage: httpster.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-09-odin.md",
    "content": "---\nlayout: post\ntitle: \"Odin\"\nslug: odin\nsource: http://wpod.in/\nimage: odin.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-10-riot.md",
    "content": "---\nlayout: post\ntitle: \"Riot\"\nslug: riot\nsource: https://muut.com/riotjs/\nimage: riot.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-11-createjs.md",
    "content": "---\nlayout: post\ntitle: \"CreateJS\"\nslug: createjs\nsource: http://createjs.com/\nimage: createJS.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-12-svg-morpheus.md",
    "content": "---\nlayout: post\ntitle: \"SVG Morpheus\"\nslug: svg-morpheus\nsource: http://alexk111.github.io/SVG-Morpheus/\nimage: svg-morpheus.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-13-basscss.md",
    "content": "---\nlayout: post\ntitle: \"Basscss\"\nslug: bassccss\nsource: http://www.basscss.com/\nimage: basscss.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-16-goodnight.md",
    "content": "---\nlayout: post\ntitle: \"Goodnight\"\nslug: goodnight\nsource: https://jaredcubilla.github.io/goodnight/\nimage: goodnight.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-17-phodevstack.md",
    "content": "---\nlayout: post\ntitle: \"Phở Devstack\"\nslug: phodevstack\nsource: http://pho.madebysource.com\nimage: phodevstack.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-18-heartbot.md",
    "content": "---\nlayout: post\ntitle: \"Heartbot\"\nslug: \"heartbot\"\nsource: http://valentines.digitalocean.com/\nimage: heartbot.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-19-terra.md",
    "content": "---\nlayout: post\ntitle: \"Terra\"\nslug: terra\nsource: http://rileyjshaw.com/terra\nimage: terra.gif\n---\n\n"
  },
  {
    "path": "_posts/2015-02-23-backstop-js.md",
    "content": "---\nlayout: post\ntitle: \"BackstopJS\"\nslug: backstop-js\nsource: http://garris.github.io/BackstopJS/\nimage: backstop-js.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-25-kickoff.md",
    "content": "---\nlayout: post\ntitle: \"Kickoff\"\nslug: kickoff\nsource: http://tmwagency.github.io/kickoff/\nimage: kickoff.png\n---\n\n"
  },
  {
    "path": "_posts/2015-02-26-roots.md",
    "content": "---\nlayout: post\ntitle: \"Roots\"\nslug: roots\nsource: https://roots.io/\nimage: roots.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-09-font-awesome.md",
    "content": "---\nlayout: post\ntitle: \"Font Awesome\"\nslug: font-awsome\nsource: http://fontawesome.io/\nimage: font-awesome.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-10-alcatraz.md",
    "content": "---\nlayout: post\ntitle: \"Alcatraz\"\nslug: alcatraz\nsource: http://alcatraz.io/\nimage: alcatraz.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-11-gin-gonic.md",
    "content": "---\nlayout: post\ntitle: \"Gin Gonic\"\nslug: gin-gonic\nsource: http://gin-gonic.github.io/gin/\nimage: gin-gonic.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-12-html5-boilerplate.md",
    "content": "---\nlayout: post\ntitle: \"HTML5 Boilerplate\"\nslug: html5-boilerplate\nsource: https://html5boilerplate.com/\nimage: html5-boilerplate.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-13-ionic.md",
    "content": "---\nlayout: post\ntitle: \"Ionic\"\nslug: ionic\nsource: http://ionicframework.com/\nimage: ionic.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-16-vide.md",
    "content": "---\nlayout: post\ntitle: \"Vide\"\nslug: vide\nsource: http://vodkabears.github.io/vide/\nimage: vide.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-17-fis.md",
    "content": "---\nlayout: post\ntitle: \"Fis\"\nslug: fis\nsource: http://fis.baidu.com/\nimage: fis.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-20-duo.md",
    "content": "---\nlayout: post\ntitle: \"Duo\"\nslug: duo\nsource: http://duojs.org/\nimage: duo.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-23-dropplets.md",
    "content": "---\nlayout: post\ntitle: \"dropplets\"\nslug: Dropplets\nsource: http://dropplets.com/\nimage: dropplets.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-24-sails-js.md",
    "content": "---\nlayout: post\ntitle: \"Sails.js\"\nslug: sails-js\nsource: http://sailsjs.org/\nimage: sails-js.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-25-restive-js.md",
    "content": "---\nlayout: post\ntitle: \"Restive.js\"\nslug: restive-js\nsource: http://restivejs.com/\nimage: restive-js.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-26-pico.md",
    "content": "---\nlayout: post\ntitle: \"Pico\"\nslug: pico\nsource: http://picocms.org/\nimage: pico.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-27-vimr.md",
    "content": "---\nlayout: post\ntitle: \"VimR\"\nslug: vimr\nsource: http://vimr.org/\nimage: vimr.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-30-krakenjs.md",
    "content": "---\nlayout: post\ntitle: \"Kraken\"\nslug: kraken\nsource: http://krakenjs.com/\nimage: krakenjs.png\n---\n\n"
  },
  {
    "path": "_posts/2015-03-31-fork.md",
    "content": "---\nlayout: post\ntitle: \"Fork CMS\"\nslug: fork\nsource: http://www.fork-cms.com/\nimage: fork.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-01-hadoop.md",
    "content": "---\nlayout: post\ntitle: \"Apache&trade; Hadoop&reg;!\"\nslug: apache-trademark-hadoop-registered-trademark\nsource: https://hadoop.apache.org/\nimage: hadoop.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-02-symfony.md",
    "content": "---\nlayout: post\ntitle: \"Symfony\"\nslug: symfony\nsource: http://symfony.com/\nimage: symfony.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-03-grav.md",
    "content": "---\nlayout: post\ntitle: \"Grav\"\nslug: grav\nsource: http://getgrav.org/\nimage: grav.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-06-p5-js.md",
    "content": "---\nlayout: post\ntitle: \"P5.js\"\nslug: p5-js\nsource: http://p5js.org/\nimage: p5-js.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-07-hammer-js.md",
    "content": "---\nlayout: post\ntitle: \"Hammer.js\"\nslug: hammer-js\nsource: http://hammerjs.github.io/\nimage: hammer-js.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-09-concrete5.md",
    "content": "---\nlayout: post\ntitle: \"concrete5\"\nslug: concrete5\nsource: http://www.concrete5.org/\nimage: concrete5.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-10-mocha.md",
    "content": "---\nlayout: post\ntitle: \"Mocha\"\nslug: mocha\nsource: http://mochajs.org/\nimage: mocha.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-13-phantomjs.md",
    "content": "---\nlayout: post\ntitle: \"PhantomJS\"\nslug: phantomjs\nsource: http://phantomjs.org/\nimage: phantomjs.png\n---\n\n"
  },
  {
    "path": "_posts/2015-04-16-illucia.md",
    "content": "---\nlayout: post\ntitle: \"Illucia\"\nslug: illucia\nsource: http://www.illucia.com/\nimage: illucia.png\n---\n\n"
  },
  {
    "path": "_posts/2015-07-08-travis-ci.md",
    "content": "---\nlayout: post\ntitle: \"Travis CI\"\nslug: travis-ci\nsource: https://travis-ci.org/\nimage: travis-ci-2.png\n---\n\n"
  },
  {
    "path": "_posts/2015-07-09-concise-css.md",
    "content": "---\nlayout: post\ntitle: \"Concise\"\nslug: concise-css\nsource: http://concisecss.com/\nimage: concise-css.png\n---\n\n"
  },
  {
    "path": "_posts/2015-07-14-atom.md",
    "content": "---\nlayout: post\ntitle: \"Atom\"\nslug: atom\nsource: https://atom.io/\nimage: atom_2.png\n---\n\n"
  },
  {
    "path": "_posts/2015-07-15-harp.md",
    "content": "---\nlayout: post\ntitle: \"Harp\"\nslug: harp\nsource: http://harpjs.com/\nimage: harp.png\n---\n\n"
  },
  {
    "path": "_posts/2015-07-16-lotus.md",
    "content": "---\nlayout: post\ntitle: \"Lotus\"\nslug: lotus\nsource: http://lotusrb.org/\nimage: lotus.png\n---\n\n"
  },
  {
    "path": "_posts/2015-07-17-timber.md",
    "content": "---\nlayout: post\ntitle: \"Timber\"\nslug: timber\nsource: http://shopify.github.io/Timber/\nimage: timber.png\n---\n\n"
  },
  {
    "path": "_posts/2015-07-20-bonsai.md",
    "content": "---\nlayout: post\ntitle: \"Bonsai\"\nslug: bonsaijs\nsource: http://bonsaijs.org/\nimage: bonsai.png\n---\n"
  },
  {
    "path": "_posts/2015-08-06-rspec.md",
    "content": "---\nlayout: post\ntitle: \"RSpec\"\nslug: rspec\nsource: http://rspec.info/\nimage: rspec.png\n---\n"
  },
  {
    "path": "_posts/2015-09-16-azk.md",
    "content": "---\nlayout: post\ntitle: \"Azk\"\nslug: azk\nsource: http://www.azk.io/\nimage: azk.png\n---\n"
  },
  {
    "path": "_posts/2015-09-17-rouge.md",
    "content": "---\nlayout: post\ntitle: \"Rouge\"\nslug: rouge\nsource: http://rouge.jneen.net/\nimage: rouge.png\n---\n\n"
  },
  {
    "path": "_posts/2015-09-18-lattice.md",
    "content": "---\nlayout: post\ntitle: \"Lattice\"\nslug: lattice\nsource: http://lattice.cf/\nimage: lattice.png\n---\n"
  },
  {
    "path": "_posts/2015-09-21-vault.md",
    "content": "---\nlayout: post\ntitle: \"Vault Project\"\nslug: vault\nsource: https://vaultproject.io/\nimage: vault.png\n---\n"
  },
  {
    "path": "_posts/2015-09-22-mixitup.md",
    "content": "---\nlayout: post\ntitle: \"MixItUp\"\nslug: mixitup\nsource: https://mixitup.kunkalabs.com/\nimage: mixitup.png\n---\n"
  },
  {
    "path": "_posts/2015-09-24-quotation-marks.md",
    "content": "---\nlayout: post\ntitle: \"Quotation-Marks\"\nslug: quotation-marks\nsource: http://quotation-marks.org/\nimage: quotation-marks.png\n---\n"
  },
  {
    "path": "_posts/2015-09-29-webfont-test.md",
    "content": "---\nlayout: post\ntitle: \"webfont|test\"\nslug: webfont-test\nsource: http://lordgiotto.github.io/webfont-test/\nimage: webfont-test.png\n---\n"
  },
  {
    "path": "_posts/2015-10-19-electron.md",
    "content": "---\nlayout: post\ntitle: \"Electron\"\nslug: electron\nsource: http://electron.atom.io/\nimage: electron.png\n---\n"
  },
  {
    "path": "_posts/2015-10-20-sneakers.md",
    "content": "---\nlayout: post\ntitle: \"Sneakers\"\nslug: sneakers\nsource: http://jondot.github.io/sneakers/\nimage: sneakers.png\n---\n"
  },
  {
    "path": "_posts/2015-10-21-ink.md",
    "content": "---\nlayout: post\ntitle: \"Ink\"\nslug: ink\nsource: http://zurb.com/ink/\nimage: ink.png\n---\n"
  },
  {
    "path": "_posts/2015-10-22-wagtail.md",
    "content": "---\nlayout: post\ntitle: \"Wagtail\"\nslug: wagtail\nsource: https://wagtail.io/\nimage: wagtail.png\n---\n"
  },
  {
    "path": "_posts/2015-10-23-rollup.md",
    "content": "---\nlayout: post\ntitle: \"Rollup\"\nslug: rollup\nsource: http://rollupjs.org/\nimage: rollup.png\n---\n"
  },
  {
    "path": "_posts/2016-01-19-gitlab.md",
    "content": "---\nlayout: post\ntitle: \"Gitlab\"\nslug: gitlab\nsource: http://gitlab.com/\nimage: gitlab.png\n---\n"
  },
  {
    "path": "_posts/2016-02-03-phoenix.md",
    "content": "---\nlayout: post\ntitle: \"Phoenix\"\nslug: phoenix\nsource: http://phoenixframework.org/\nimage: phoenix.png\n---\n"
  },
  {
    "path": "_posts/2016-05-23-reason.md",
    "content": "---\nlayout: post\ntitle: \"Reason\"\nslug: reason\nsource: http://facebook.github.io/reason/\nimage: reason.png\n---\n"
  },
  {
    "path": "_posts/2016-05-31-solr.md",
    "content": "---\nlayout: post\ntitle: \"Apache Solr\"\nslug: solr\nsource: http://lucene.apache.org/solr/\nimage: solr.png\n---\n"
  },
  {
    "path": "_posts/2016-06-01-deco.md",
    "content": "---\nlayout: post\ntitle: \"Deco\"\nslug: deco\nsource: https://www.decosoftware.com/\nimage: deco.png\n---\n"
  },
  {
    "path": "_posts/2016-06-02-mojs.md",
    "content": "---\nlayout: post\ntitle: \"mojs\"\nslug: mojs\nsource: http://mojs.io/\nimage: mojs.png\n---\n"
  },
  {
    "path": "_posts/2016-06-03-hospitalrun.md",
    "content": "---\nlayout: post\ntitle: \"HospitalRun\"\nslug: hospitalrun\nsource: http://hospitalrun.io/\nimage: hospitalrun.png\n---\n"
  },
  {
    "path": "_posts/2016-06-06-zulip.md",
    "content": "---\nlayout: post\ntitle: \"Zulip\"\nslug: zulip\nsource: https://www.zulip.org/\nimage: zulip.png\n---\n"
  },
  {
    "path": "_posts/2016-06-20-elm.md",
    "content": "---\nlayout: post\ntitle: \"elm\"\nslug: elm\nsource: http://elm-lang.org/\nimage: elm.png\n---\n"
  },
  {
    "path": "_posts/2016-10-11-yarn.md",
    "content": "---\nlayout: post\ntitle: \"yarn\"\nslug: Yarn\nsource: https://yarnpkg.com/\nimage: yarn.png\n---\n"
  },
  {
    "path": "_posts/2017-01-25-rocket.md",
    "content": "---\nlayout: post\ntitle: \"rocket\"\nslug: Rocket\nsource: https://rocket.rs/\nimage: rocket.png\n---\n"
  },
  {
    "path": "_posts/2017-02-27-webpack.md",
    "content": "---\nlayout: post\ntitle: \"webpack\"\nslug: webpack\nsource: https://webpack.js.org/\nimage: webpack.png\n---\n"
  },
  {
    "path": "_posts/2017-02-28-eta.md",
    "content": "---\nlayout: post\ntitle: \"Eta\"\nslug: eta\nsource: http://eta-lang.org/\nimage: eta.png\n---\n"
  },
  {
    "path": "_posts/2017-03-06-guile.md",
    "content": "---\nlayout: post\ntitle: \"Guile\"\nslug: guile\nsource: http://www.gnu.org/software/guile/\nimage: guile.png\n---\n"
  },
  {
    "path": "_posts/2017-03-14-tokamak.md",
    "content": "---\nlayout: post\ntitle: \"токамак\"\nslug: tokamak\nsource: https://vertexclique.github.io/tokamak/\nimage: tokamak.png\n---\n"
  },
  {
    "path": "_posts/2017-03-20-gulp.md",
    "content": "---\nlayout: post\ntitle: \"Gulp\"\nslug: gulp\nsource: http://gulpjs.com/\nimage: gulp_2.png\n---\n"
  },
  {
    "path": "_posts/2017-04-03-flow.md",
    "content": "---\nlayout: post\ntitle: \"Flow\"\nslug: flow\nsource: https://flow.org/\nimage: flow.png\n---\n"
  },
  {
    "path": "_posts/2017-04-05-graphql.md",
    "content": "---\nlayout: post\ntitle: \"GraphQL\"\nslug: graphql\nsource: http://graphql.org/\nimage: graphql.png\n---\n"
  },
  {
    "path": "_posts/2017-05-18-denali.md",
    "content": "---\nlayout: post\ntitle: \"Denali\"\nslug: denali\nsource: http://denalijs.org/\nimage: denali.png\n---\n"
  },
  {
    "path": "_posts/2017-05-22-concourse.md",
    "content": "---\nlayout: post\ntitle: \"Concourse\"\nslug: concourse\nsource: https://concourse.ci/\nimage: concourse.png\n---\n"
  },
  {
    "path": "_posts/2017-05-30-cayley.md",
    "content": "---\nlayout: post\ntitle: \"Cayley\"\nslug: cayley\nsource: https://cayley.io/\nimage: cayley.png\n---\n"
  },
  {
    "path": "_posts/2017-06-02-howlerjs.md",
    "content": "---\nlayout: post\ntitle: \"howler.js\"\nslug: howlerjs\nsource: https://howlerjs.com/\nimage: howlerjs.png\n---\n"
  },
  {
    "path": "_posts/2017-09-18-gatsbyjs.md",
    "content": "---\nlayout: post\ntitle: \"Gatsby\"\nslug: gatsby\nsource: https://www.gatsbyjs.org/\nimage: gatsby.png\n---\n"
  },
  {
    "path": "_posts/2017-09-27-vespa.md",
    "content": "---\nlayout: post\ntitle: \"Vespa\"\nslug: vespa\nsource: http://vespa.ai/\nimage: vespa.png\n---\n"
  },
  {
    "path": "_posts/2018-09-04-tailwindcss.md",
    "content": "---\nlayout: post\ntitle: \"Tailwind CSS\"\nslug: tailwindcss\nsource: https://tailwindcss.com/\nimage: tailwindcss.png\n---\n"
  },
  {
    "path": "_posts/2018-09-10-terraform.md",
    "content": "---\nlayout: post\ntitle: \"Terraform\"\nslug: terraform\nsource: https://www.terraform.io/\nimage: terraform.png\n---\n"
  },
  {
    "path": "_posts/2018-10-02-quill.md",
    "content": "---\nlayout: post\ntitle: \"Quill\"\nslug: quill\nsource: https://quilljs.com/\nimage: quill.png\n---\n"
  },
  {
    "path": "_posts/2018-10-31-city-lights.md",
    "content": "---\nlayout: post\ntitle: \"City Lights\"\nslug: city-lights\nsource: http://citylights.xyz/\nimage: city-lights.png\n---\n"
  },
  {
    "path": "_posts/2018-11-01-buttercup.md",
    "content": "---\nlayout: post\ntitle: \"Buttercup\"\nslug: buttercup\nsource: https://buttercup.pw/\nimage: buttercup.png\n---\n"
  },
  {
    "path": "_posts/2019-04-23-sorbet.md",
    "content": "---\nlayout: post\ntitle: \"Sorbet\"\nslug: sorbet\nsource: https://sorbet.org/\nimage: sorbet.png\n---\n"
  },
  {
    "path": "_posts/2020-01-01-crater.md",
    "content": "---\nlayout: post\ntitle: \"Crater\"\nslug: crater\nsource: https://craterapp.com/\nimage: crater.png\n---\n"
  },
  {
    "path": "_posts/2020-01-02-confidant.md",
    "content": "---\nlayout: post\ntitle: \"Confidant\"\nslug: confidant\nsource: https://lyft.github.io/confidant/\nimage: confidant.png\n---\n"
  },
  {
    "path": "_posts/2020-01-03-dcos.md",
    "content": "---\nlayout: post\ntitle: \"DC/OS\"\nslug: dcos\nsource: https://dcos.io/\nimage: dcos.png\n---\n"
  },
  {
    "path": "_posts/2020-01-06-hyper.md",
    "content": "---\nlayout: post\ntitle: \"Hyper\"\nslug: hyper\nsource: https://hyper.is/\nimage: hyper.png\n---\n"
  },
  {
    "path": "_posts/2020-01-07-tensorflow.md",
    "content": "---\nlayout: post\ntitle: \"TensorFlow\"\nslug: tensorflow\nsource: https://www.tensorflow.org/\nimage: tensorflow.png\n---\n"
  },
  {
    "path": "_posts/2020-01-08-status.md",
    "content": "---\nlayout: post\ntitle: \"Status\"\nslug: status\nsource: https://status.im/\nimage: status.png\n---\n"
  },
  {
    "path": "_posts/2020-01-09-tailwindcss.md",
    "content": "---\nlayout: post\ntitle: \"Tailwind CSS\"\nslug: tailwindcss\nsource: https://tailwindcss.com/\nimage: tailwindcss-2.png\n---\n"
  },
  {
    "path": "_posts/2020-01-10-chartjs.md",
    "content": "---\nlayout: post\ntitle: \"Chart.js\"\nslug: chart-js\nsource: https://www.chartjs.org/\nimage: chartjs-2.png\n---\n"
  },
  {
    "path": "_posts/2020-01-13-pull-to-refresh.md",
    "content": "---\nlayout: post\ntitle: \"PullToRefresh.js\"\nslug: pull-to-refresh\nsource: https://www.boxfactura.com/pulltorefresh.js/\nimage: pull-to-refresh.png\n---\n"
  },
  {
    "path": "_posts/2020-01-14-pendulum.md",
    "content": "---\nlayout: post\ntitle: \"Pendulum\"\nslug: pendulum\nsource: https://pendulum.eustace.io/\nimage: pendulum.png\n---\n"
  },
  {
    "path": "_posts/2020-01-15-kap.md",
    "content": "---\nlayout: post\ntitle: \"Kap\"\nslug: kap\nsource: https://getkap.co/\nimage: kap.png\n---\n"
  },
  {
    "path": "_posts/2020-01-16-godot.md",
    "content": "---\nlayout: post\ntitle: \"Godot\"\nslug: godot\nsource: https://godotengine.org/\nimage: godot.png\n---\n"
  },
  {
    "path": "_posts/2020-01-17-storybook.md",
    "content": "---\nlayout: post\ntitle: \"Storybook\"\nslug: storybook\nsource: https://storybook.js.org/\nimage: storybook.png\n---\n"
  },
  {
    "path": "_posts/2020-01-20-puma.md",
    "content": "---\nlayout: post\ntitle: \"Puma\"\nslug: puma\nsource: https://puma.io/\nimage: puma.png\n---\n"
  },
  {
    "path": "_posts/2020-01-21-jet-brains-mono.md",
    "content": "---\nlayout: post\ntitle: \"JetBrains Mono\"\nslug: jet-brains-mono\nsource: https://www.jetbrains.com/lp/mono/\nimage: jet-brains-mono.png\n---\n"
  },
  {
    "path": "_posts/2020-01-22-wasmer.md",
    "content": "---\nlayout: post\ntitle: \"Wasmer\"\nslug: wasmer\nsource: https://wasmer.io/\nimage: wasmer.png\n---\n"
  },
  {
    "path": "_posts/2020-01-23-atom.md",
    "content": "---\nlayout: post\ntitle: \"Atom\"\nslug: atom\nsource: https://atom.io/\nimage: atom-3.png\n---\n"
  },
  {
    "path": "_posts/2020-01-24-vscode.md",
    "content": "---\nlayout: post\ntitle: \"Visual Studio Code\"\nslug: vscode\nsource: https://code.visualstudio.com/\nimage: vscode.png\n---\n"
  },
  {
    "path": "_posts/2020-01-27-mirage.md",
    "content": "---\nlayout: post\ntitle: \"Mirage JS\"\nslug: mirage\nsource: https://miragejs.com/\nimage: mirage.png\n---\n"
  },
  {
    "path": "_posts/2020-01-28-native-script.md",
    "content": "---\nlayout: post\ntitle: \"NativeScript\"\nslug: native-script\nsource: https://www.nativescript.org/\nimage: native-script.png\n---\n"
  },
  {
    "path": "_posts/2020-01-29-gradle.md",
    "content": "---\nlayout: post\ntitle: \"Gradle\"\nslug: gradle\nsource: https://gradle.org/\nimage: gradle.png\n---\n"
  },
  {
    "path": "_posts/2020-01-30-laravel.md",
    "content": "---\nlayout: post\ntitle: \"Laravel\"\nslug: laravel\nsource: https://laravel.com/\nimage: laravel-2.png\n---\n"
  },
  {
    "path": "_posts/2020-01-31-dubbo.md",
    "content": "---\nlayout: post\ntitle: \"Apache Dubbo\"\nslug: dubbo\nsource: http://dubbo.apache.org/\nimage: dubbo.png\n---\n"
  },
  {
    "path": "_posts/2020-02-03-popper.md",
    "content": "---\nlayout: post\ntitle: \"Popper\"\nslug: popper\nsource: https://popper.js.org/\nimage: popper.png\n---\n"
  },
  {
    "path": "_posts/2020-02-04-thunderbird.md",
    "content": "---\nlayout: post\ntitle: \"Thunderbird\"\nslug: thunderbird\nsource: https://www.thunderbird.net/\nimage: thunderbird.png\n---\n"
  },
  {
    "path": "_posts/2020-02-05-hanami.md",
    "content": "---\nlayout: post\ntitle: \"Hanami\"\nslug: hanami\nsource: http://hanamirb.org/\nimage: hanami.png\n---\n"
  },
  {
    "path": "_posts/2020-02-06-firefox.md",
    "content": "---\nlayout: post\ntitle: \"Firefox\"\nslug: firefox\nsource: https://www.mozilla.org/en-US/firefox/new/\nimage: firefox-2.png\n---\n"
  },
  {
    "path": "_posts/2020-02-07-royale.md",
    "content": "---\r\nlayout: post\r\ntitle: \"Royale\"\r\nslug: royale\r\nsource: https://royale.apache.org/\r\nimage: royale.png\r\n---\r\n"
  },
  {
    "path": "_posts/2020-02-10-angular.md",
    "content": "---\nlayout: post\ntitle: \"Angular\"\nslug: angular\nsource: https://angular.io/\nimage: angular.png\n---\n"
  },
  {
    "path": "_posts/2020-02-11-drat.md",
    "content": "---\nlayout: post\ntitle: \"DRAT\"\nslug: drat\nsource: https://drat.apache.org/\nimage: drat.png\n---\n"
  },
  {
    "path": "_posts/2020-02-12-blox.md",
    "content": "---\nlayout: post\ntitle: \"Blox\"\nslug: blox\nsource: https://blox.github.io/\nimage: blox.png\n---\n"
  },
  {
    "path": "_posts/2020-02-13-middleman.md",
    "content": "---\nlayout: post\ntitle: \"Middleman\"\nslug: middleman\nsource: https://middlemanapp.com/\nimage: middleman-2.png\n---\n"
  },
  {
    "path": "_posts/2020-02-17-sinon-js.md",
    "content": "---\nlayout: post\ntitle: \"Sinon.JS\"\nslug: sinon-js\nsource: https://sinonjs.org/\nimage: sinon-js.png\n---\n"
  },
  {
    "path": "_posts/2020-02-21-emberjs.md",
    "content": "---\nlayout: post\ntitle: \"Ember.js\"\nslug: emberjs\nsource: https://emberjs.com/\nimage: emberjs.png\n---\n"
  },
  {
    "path": "_posts/2020-02-24-pagedjs.md",
    "content": "---\nlayout: post\ntitle: \"Paged.js\"\nslug: pagedjs\nsource: https://www.pagedjs.org/\nimage: pagedjs.png\n---\n"
  },
  {
    "path": "_posts/2020-02-25-nicholas.md",
    "content": "---\nlayout: post\ntitle: \"Nicholas\"\nslug: nicholas\nsource: https://nicholas.adgr.dev/\nimage: nicholas.png\n---\n"
  },
  {
    "path": "_posts/2020-02-27-ghost.md",
    "content": "---\nlayout: post\ntitle: \"Ghost\"\nslug: ghost\nsource: https://ghost.org/\nimage: ghost-2.png\n---\n"
  },
  {
    "path": "_posts/2020-02-28-pop-os.md",
    "content": "---\nlayout: post\ntitle: \"Pop!_OS\"\nslug: pop-os\nsource: https://system76.com/pop\nimage: pop-os.png\n---\n"
  },
  {
    "path": "_posts/2020-11-02-cube-js.md",
    "content": "---\nlayout: post\ntitle: \"Cube.js\"\nslug: cube-js\nsource: https://cube.dev/\nimage: cube.png\n---\n"
  },
  {
    "path": "_posts/2020-11-04-metabase.md",
    "content": "---\nlayout: post\ntitle: \"Metabase\"\nslug: metabase\nsource: https://www.metabase.com/\nimage: metabase.png\n---\n"
  },
  {
    "path": "_posts/2020-11-06-pm2.md",
    "content": "---\nlayout: post\ntitle: \"PM2\"\nslug: pm2\nsource: https://pm2.keymetrics.io/\nimage: pm2.png\n---\n"
  },
  {
    "path": "_posts/xxxx-xx-xx-tidy-models.md",
    "content": "---\nlayout: post\ntitle: \"Tidymodels\"\nslug: tidy-models\nsource: https://www.tidymodels.org/\nimage: tidymodels.png\n---\n"
  },
  {
    "path": "about.md",
    "content": "---\nlayout: page\ntitle: About\n---\n\nBeautiful Open is a showcase of sites for open source projects that have been\nwell designed. It's  built and curated by [@trek](http://twitter.com/trek).\n\n\n## Submissions\nWe don't accept all submissions.  All submissions must follow the instructions\non the *How to submit* section below. We reserve the right to reject any\nsubmission. Submissions with inappropriate content will not be accepted.\n\n## How to submit\nTo submit a site suggestion, [open an issue](https://github.com/trek/beautiful-open/issues/new) or create a pull request. Please make sure to follow the patterns described in [CONTRIBUTING.md](https://github.com/trek/beautiful-open/blob/master/CONTRIBUTING.md)\n\n## About the site\nInspired by [Bootstrap Expo](http://expo.getbootstrap.com/)\nand [Built With Ember](http://builtwithember.io/). It's built with\n[Jekyll](http://jekyllrb.com), developed on\n[GitHub](https://github.com/trek/beautiful-open), and is hosted\non [Netlify](https://www.netlify.com/).\n\n## Contact\nIf you have any questions or comments, just send an email to\n[trek.glowacki@gmail.com](mailto:trek.glowacki@gmail.com).\n"
  },
  {
    "path": "css/main.css",
    "content": "---\n---\n{% include css/bootstrap.min.css %}\n\n.st-default-search-input {\n  display: inline-block;\n  width: 190px;\n  height: 16px;\n  padding: 7px 11px 7px 28px;\n  border: 1px solid #bbb;\n  border: 1px solid rgba(0,0,0,0.25);\n  font-weight: 400;\n  color: #444;\n  font-size: 14px;\n  line-height: 16px;\n  box-sizing: content-box;\n  background: #fff 8px 8px no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6%2BR8AAAACXB…Hx4Taq1nrnKaW8K6XUUsrHWuvNevdRRLzFGwzvDbXAB9cDAHvhedDruuxSAAAAAElFTkSuQmCC);\n  background-clip: padding-box;\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  -ms-border-radius: 5px;\n  -o-border-radius: 5px;\n  border-radius: 5px;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  font-family: \"Helvetica Neue\",Helvetica,Arial,\"Lucida Grande\",sans-serif;\n}\n\nbody {\n  color:#7f7f7f;\n  margin: 0 20px 20px 0;\n  font: 18px \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  line-height: 27px;\n}\n\n.site-name {\n  color:#3f3f3f;\n}\n\n.site-name:hover {\n  text-decoration: none;\n  color:#3f3f3f;\n}\n\n.main-sidebar {\n  position:fixed;\n  width:230px;\n  margin-left:30px;\n  font-size: 14px;\n}\n\nh2 {\n  color: black;\n}\n\nh1 {\n  margin-top:0;\n  font-size: 47px ;\n  font-weight: 200;\n  line-height: 50px;\n}\n\n.subtitle {\n  font-size: 18px;\n  color: #7f7f7f;\n}\n\n.byline {\n  font-size: 12px;\n  color:#bfbfbf;\n}\n\n.main-container {\n  margin:40px 0 0 310px;\n}\n\n.main-sidebar-hr {\n  margin: 30px 0;\n}\n\n.screenshot-link:hover {\n  text-decoration: none;\n}\n\n.posts {\n  max-width: 1004px;\n}\n\n.posts li {\n  margin-bottom:70px;\n}\n\n.post-description {\n  text-align: center;\n  margin-top:20px;\n}\n\n.post-description-title {\n  font-size: 37px;\n}\n\n.post-description-date {\n  color: #a2a2a2;\n}\n\n.post-description-link {\n  color: black;\n}\n\n/*************/\n/* Paginator */\n/*************/\n.paginator {\n  width:100%;\n  max-width: 1004px;\n  margin-bottom:40px;\n  float:left;\n}\n.paginate {\n  display:block;\n  float:left;\n  width:50%;\n  padding:20px 0;\n  text-align: center;\n  font-weight: bold;\n  font-size: 18px;\n}\n\n.paginate.older {\n  border-top-left-radius: 5px;\n  border-bottom-left-radius: 5px;\n  border-top: 1px solid #e5e5e5;\n  border-left: 1px solid #e5e5e5;\n  border-bottom: 1px solid #e5e5e5;\n}\n\n.paginate.newer {\n  border-top-right-radius: 5px;\n  border-bottom-right-radius: 5px;\n  border: 1px solid #e5e5e5;\n}\n\nspan.paginate {\n  color: #bfbfbf;\n}\n\na.paginate:hover {\n  background-color: #44b1f6;\n  text-decoration: none;\n  color:white;\n  border-color: #44b1f6;\n}\n\n\n/************/\n/* Browser */\n/************/\n.browser-frame {\n  border-radius: 5px;\n  border: 2px solid #CCC;\n  width:100%;\n  max-width: 1004px;\n}\n\n.browser-top-bar {\n  border-bottom: 2px solid #CCC;\n  width:100%;\n  float:left;\n}\n\n.browser-address {\n  border-radius: 5px;\n  background: #efefef;\n  height: 25px;\n  float:right;\n  margin: 10px;\n}\n\n.browser-button-wrapper {\n  padding: 9px 0 0 10px;\n  float:left;\n}\n\n.browser-button {\n  display:inline-block;\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  background-color: #CCC;\n}\n\n.browser-container > p {\n  padding:0;\n  margin:0;\n}\n\n.browser-container img {\n  width: 100%;\n  max-width: 1000px;\n  border-bottom-left-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n\n/* xs */\n@media (min-width: 0px) and (max-width: 767px) {\n  .main-sidebar {\n    position: inherit;\n    margin: 20px;\n    width: 100%;\n  }\n\n  .main-sidebar-hr {\n    margin: 20px 20px 20px 0;\n  }\n\n  .main-container {\n    margin: 40px 0 0 20px;\n  }\n\n  .browser-address {\n    width:74%;\n    height: 10px;\n    border-radius: 2px;\n  }\n\n  .browser-button-wrapper {\n    padding-top: 0;\n  }\n\n  .browser-button {\n    height: 8px;\n    width: 8px;\n  }\n\n  .hidden-xs {\n    display: none;\n  }\n\n  .visible-xs {\n    display: block;\n  }\n\n}\n\n/* sm */\n@media (min-width: 768px) and (max-width: 991px) {\n  .browser-address {\n    width:83%;\n  }\n\n  .visible-xs {\n    display:none;\n  }\n}\n\n/* md */\n@media (min-width: 992px) and (max-width: 1199px) {\n  .browser-address {\n    width:89%;\n  }\n\n  .visible-xs {\n    display:none;\n  }\n}\n\n/* lg */\n@media (min-width: 1200px) {\n  .browser-address {\n    width:91%;\n  }\n\n  .visible-xs {\n    display:none;\n  }\n}\n"
  },
  {
    "path": "feed.xml",
    "content": "---\n---\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<rss version=\"2.0\"\n  xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"\n  xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\"\n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n  xmlns:atom=\"http://www.w3.org/2005/Atom\"\n  xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\"\n  xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n  >\n  <channel>\n    <title xml:lang=\"en\">{{ site.name }}</title>\n    <atom:link type=\"application/atom+xml\" href=\"{{ site.url }}/feed.xml\" rel=\"self\"/>\n    <link>{{ site.url }}/</link>\n    <pubDate>{{ site.time | date: \"%a, %d %b %Y %H:%M:%S %z\" }}</pubDate>\n    <lastBuildDate>{{ site.time | date: \"%a, %d %b %Y %H:%M:%S %z\" }}</lastBuildDate>\n    <language>en-US</language>\n    <description>{{ site.description }}</description>\n    {% for post in site.posts limit:10 %}\n      <item>\n        <title>{{ post.title }}</title>\n        <description>{{ post.content | xml_escape }}</description>\n        <pubDate>{{ post.date | date: \"%a, %d %b %Y %H:%M:%S %z\" }}</pubDate>\n        <link>{{ site.url }}{{ post.url }}</link>\n        <guid isPermaLink=\"true\">{{ site.url }}{{ post.url }}</guid>\n      </item>\n    {% endfor %}\n  </channel>\n</rss>\n"
  },
  {
    "path": "index.html",
    "content": "---\nlayout: default\ntitle: Home\npagination:\n  enabled: true\n---\n\n<div id=\"home\">\n  <ul class=\"posts list-unstyled\">\n    {% for post in paginator.posts %}\n      <li>\n        <a href=\"{{ post.source }}\" class=\"screenshot-link\" target=\"_blank\">\n          <div class=\"browser-frame\">\n            <div class=\"browser-top-bar\">\n              <div class=\"browser-button-wrapper\">\n                <div class=\"browser-button\"></div>\n                <div class=\"browser-button\"></div>\n                <div class=\"browser-button\"></div>\n              </div>\n              <div class=\"browser-address\"></div>\n            </div>\n            <div class=\"browser-container\">\n              <img src=\"/screenshots/{{post.image}}\" />\n              {{ post.content }}\n            </div>\n          </div>\n        </a>\n        <div class=\"post-description\">\n          <h3 class=\"post-description-title\"><a href=\"{{ post.url }}\" class=\"post-description-link\">{{ post.title }}</a></h3>\n          <p class=\"post-description-date\">{{ post.date | date: \"%B %-d, %Y\" }}</p>\n        </div>\n      </li>\n    {% endfor %}\n  </ul>\n  {% include pagination.html %}\n</div>\n"
  },
  {
    "path": "robots.txt",
    "content": "---\n---\n\n# www.robotstxt.org/\n\n# Allow crawling of all content\nUser-agent: *\nDisallow:\nSitemap: {{ site.url }}/sitemap.xml\n"
  },
  {
    "path": "scripts/test-PR.sh",
    "content": "#!/bin/bash\n# set -ev\nhyphenToTitleCase() { \n    tr '-' '\\n' | awk '{printf \"%s%s\", toupper(substr($0,0,1)), substr($0,2)}';\n}\nfiles=$(git log -m -1 --name-only --pretty=\"format:\" ${TRAVIS_COMMIT});\n\n# split by space\npost=$(echo $files | cut -f1 -d\\ );\necho \"- Post path: $post\";\nscreenshot=$(echo $files | cut -f2 -d\\ );\necho \"- Screenshot path: $screenshot\";\n\n# test filename == xxxx-xx-xx-.*\\.md\n# match=$(echo $post | grep -o \"_posts/xxxx-xx-xx-.*\\.md\");\n# if [[ $match != $post ]]; then\n#   echo \"$post does not match the pattern \\\"_posts/xxxx-xx-.*\\.md\\\"\";\n#   exit 1;\n# fi\n\n# test _post file content\n\n# layout == post\nmatch=$(grep -o \"layout:\\ *post\" $post);\nif [[ $match == \"\" ]]; then\n  echo \"Incorrect layout. Should be \\\"post\\\".\";\n  exit 1;\nfi\n\n# slug == filename\nmatch=$(grep \"slug:.*\" $post | sed \"s/slug:\\ *\\(.*\\)$/_posts\\/xxxx-xx-xx-\\1.md/\");\nif [[ $match != $post ]]; then\n  echo \"The slug should match the filename.\";\n  exit 1;\nfi\n\n# title is Tile Cased\ncorrect_title=$(grep \"slug:.*\" $post | sed \"s/slug:\\ *//\" | hyphenToTitleCase);\nactual_title=$(grep \"title:.*\" $post | sed \"s/title:\\ *\\\"\\(.*\\)\\\"$/\\1/\");\nif [[ $correct_title != $actual_title ]]; then\n  echo \"Title should be the title cased slug.\";\n  exit 1;\nfi\n\n# img tag matches the screenshot name\npath=$(grep \"<img src=\\\"/screenshots/.*\\\">$\" $post | sed \"s/<img src=\\\"\\/\\(.*\\)\\\">$/\\1/\");\nif [[ ! -f $path ]]; then\n  echo \"$path not found!\";\n  exit 1;\nfi\n\nif [[ $path != $screenshot ]]; then\n  echo \"The path in the post img tag doesn't match the filename.\";\n  exit 1;\nfi\n\n# img is 1000 x 800\nsize=\"1000 x 800\";\nactual_size=$(file $screenshot | grep -o \"$size\");\nif [[ $size != $actual_size ]]; then\n  echo \"Size of the image should be $size px.\";\n  exit 1;\nfi\n\n# test if website is up\nsource=$(grep \"source:.*\" $post | sed \"s/source:\\ *//\");\nif ! curl -s --head  --request GET $source | grep \"200 OK\" > /dev/null; then\n    echo \"$source didn't respond 200 OK.\"\n    exit 1;\nfi\n\necho \"\";\necho \"All tests passed!\"\necho \"\";\nexit 0;\n"
  },
  {
    "path": "sitemap.xml",
    "content": "---\n---\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>{{ site.url }}/</loc>\n    <lastmod>{{ site.time | date_to_xmlschema }}</lastmod>\n    <changefreq>daily</changefreq>\n    <priority>1.0</priority>\n  </url>\n  {% for page in site.html_pages %}\n  {% if page.title != \"Home\" %}\n  <url>\n    <loc>{{ site.url }}{{ page.url }}</loc>\n    <lastmod>{{ site.time | date_to_xmlschema }}</lastmod>\n    <changefreq>weekly</changefreq>\n    <priority>0.7</priority>\n  </url>\n  {% endif %}\n  {% endfor %}\n  {% for post in site.posts %}\n  <url>\n    <loc>{{ site.url }}{{ post.url }}</loc>\n    <lastmod>{{ post.date | date_to_xmlschema }}</lastmod>\n    <changefreq>weekly</changefreq>\n    <priority>0.8</priority>\n  </url>\n  {% endfor %}\n</urlset>\n"
  },
  {
    "path": "snap.js",
    "content": "/*\n    requires: phantomjs, async\n    usage: phantomjs snap.js\n*/\nvar args = require('system').args;\nvar site = args[1];\nvar name = args[2];\nvar timeout = args[3] || 0;\nvar sizes = [1000, 800];\n\nvar page = require('webpage').create();\npage.viewportSize = {\n    width: sizes[0],\n    height: sizes[1]\n};\npage.clipRect = {\n  top: 0,\n  left: 0,\n  width: sizes[0],\n  height: sizes[1]\n};\npage.zoomFactor = 0.9;\npage.open(site, function (status) {\n  setTimeout(function(){\n    var filename = name + '.png';\n    page.render('./screenshots/' + filename);\n    page.close();\n    console.log('done!');\n    phantom.exit();\n  }, timeout);\n});\n\n\n"
  }
]