├── .csslintrc ├── .gitignore ├── .htaccess ├── .jshintrc ├── .travis.yml ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── _data ├── embeds.yml └── metrics.yml ├── _images ├── app │ ├── fusion-grid-chart.png │ ├── fusion-grid.png │ ├── fusion-map-grid-chart.png │ └── kml-sandy.png ├── blog │ └── open-workflow.png ├── embed │ ├── addthis.png │ ├── disqus-splash.png │ ├── flexslider.png │ ├── google-cse.png │ ├── mailchimp.png │ ├── map.png │ ├── panoramio.png │ ├── twitter-bird.jpg │ ├── uservoice.png │ └── youtube-splash.png ├── opentheme-workflow.png └── wireframe │ ├── centered-paragraph.png │ ├── image-square.png │ ├── image-text.png │ ├── image.png │ ├── media-paragraph-alt.png │ ├── media-paragraph.png │ ├── paragraph.png │ ├── short-paragraph.png │ ├── square-image.png │ ├── text-image.png │ └── white-image.png ├── _includes ├── disqus.html ├── embed-cards.html ├── embed-google-analytics.html ├── embed-google-map.html ├── embed-mailchimp.html ├── embed-youtube.html ├── fb-button.html ├── fb-comments.html ├── fb-setup.html ├── feature-post.html ├── footer.html ├── fusion-filter-grid.html ├── head.html ├── home-header.html ├── js.html ├── kml-viewer.html ├── landing-header.html ├── menu.html ├── metrics-liquid.html ├── metrics-percent.html ├── page-bar.html ├── post-bar.html ├── post-header.html ├── posts-paginator.html ├── recent-apps.html ├── recent-posts.html ├── related-posts.html ├── site-categories.html ├── site-tags.html └── slider-header.html ├── _layouts ├── fusion.html ├── kitchen.html ├── landing.html ├── metrics-layout.html ├── panoramio.html ├── post.html └── slider.html ├── _posts ├── apps │ ├── 2014-12-19-fusion-grid-sport-scores.md │ ├── 2014-12-20-fusion-grid-chart-coffee-production.md │ ├── 2014-12-20-fusion-map-grid-chart-coffee-production.md │ └── 2015-01-07-geo-visualization-sandy-and-airports.md └── blog │ ├── 2014-11-24-starter-post-media-embed.md │ ├── 2014-11-25-how-to-design-a-blog-in-jekyll.md │ ├── 2014-11-26-open-cloud-based-workflow-for-designing-your-website.md │ ├── 2014-11-27-configurable-opentheme-features.md │ ├── 2014-11-29-design-goals-for-opentheme.md │ ├── 2014-11-29-starter-post-twitter-embed.md │ ├── 2014-12-05-starter-post-google-map-embed.md │ ├── 2014-12-1-starter-post.md │ ├── 2014-12-15-content-strategy-for-startup-websites.md │ └── 2014-12-2-data-driven-web-apps-using-github.md ├── _sass ├── _footer.scss ├── _header.scss ├── _menu.scss ├── _newsletter.scss ├── _pygments-syntax.scss ├── _queries.scss ├── _resets.scss ├── _ribbons.scss ├── _subtle-patterns.scss ├── _tags.scss └── main.scss ├── apps.html ├── blog.html ├── bower.json ├── category.html ├── coffee └── metrics.js ├── css ├── img │ ├── blu_stripes.png │ ├── congruent_pentagon.png │ ├── dark_wood.png │ ├── escheresque_ste.png │ ├── footer_lodyas.png │ ├── graphy.png │ ├── grey_wash_wall.png │ ├── retina_wood.png │ ├── skulls.png │ ├── symphony.png │ ├── tiny_grid.png │ └── tiny_grid_@2X.png ├── main.css └── main.min.css ├── embeds.html ├── favicon.ico ├── feed.xml ├── google9cf5b33ea59368cf.html ├── gulpfile.js ├── img ├── app │ ├── fusion-grid-chart.png │ ├── fusion-grid.png │ ├── fusion-map-grid-chart.png │ └── kml-sandy.png ├── blog │ └── open-workflow.png ├── embed │ ├── addthis.png │ ├── disqus-splash.png │ ├── flexslider.png │ ├── google-cse.png │ ├── mailchimp.png │ ├── map.png │ ├── panoramio.png │ ├── twitter-bird.jpg │ ├── uservoice.png │ └── youtube-splash.png ├── opentheme-workflow.png └── wireframe │ ├── centered-paragraph.png │ ├── image-square.png │ ├── image-text.png │ ├── image.png │ ├── media-paragraph-alt.png │ ├── media-paragraph.png │ ├── paragraph.png │ ├── short-paragraph.png │ ├── square-image.png │ ├── text-image.png │ └── white-image.png ├── index.html ├── js ├── metrics.js └── metrics.min.js ├── kitchensink.html ├── metrics.html ├── package.json ├── panoramio.html ├── robots.txt ├── script ├── cibuild.sh ├── clone.sh ├── publish.sh ├── shove.sh └── srv.sh ├── search.html ├── sitemap.xml ├── static-data ├── 287257.kml ├── 4.5_month.geojson ├── All_Ships_CL.kmz ├── Volcanos GeoTour.kml ├── WorldAirports.kml ├── earthquakes.kml ├── lake-michigan-ship-routes.kml ├── significant_month.geojson └── tra2shp.kml └── tag.html /.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .c9/ 2 | _site/ 3 | Gemfile.lock 4 | node_modules -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | # Source: https://github.com/mrmrs/nkd/blob/master/.htaccess 2 | # GZIP the assets that should be gzipped. This file goes in your root directory 3 | # if you're serving up your site via APACHE. http://httpd.apache.org/docs/2.2/mod/mod_deflate.html 4 | 5 | AddOutputFilterByType DEFLATE text/plain 6 | AddOutputFilterByType DEFLATE text/html 7 | AddOutputFilterByType DEFLATE text/xml 8 | AddOutputFilterByType DEFLATE text/css 9 | AddOutputFilterByType DEFLATE application/xml 10 | AddOutputFilterByType DEFLATE application/xhtml+xml 11 | AddOutputFilterByType DEFLATE application/rss+xml 12 | AddOutputFilterByType DEFLATE application/javascript 13 | AddOutputFilterByType DEFLATE application/x-javascript -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | // JSHint Default Configuration File (as on JSHint website) 3 | // See http://jshint.com/docs/ for more details 4 | 5 | "maxerr" : 50, // {int} Maximum error before stopping 6 | 7 | // Enforcing 8 | "bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.) 9 | "camelcase" : false, // true: Identifiers must be in camelCase 10 | "curly" : true, // true: Require {} for every new block or scope 11 | "eqeqeq" : true, // true: Require triple equals (===) for comparison 12 | "forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty() 13 | "freeze" : true, // true: prohibits overwriting prototypes of native objects such as Array, Date etc. 14 | "immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` 15 | "indent" : 4, // {int} Number of spaces to use for indentation 16 | "latedef" : false, // true: Require variables/functions to be defined before being used 17 | "newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()` 18 | "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` 19 | "noempty" : true, // true: Prohibit use of empty blocks 20 | "nonbsp" : true, // true: Prohibit "non-breaking whitespace" characters. 21 | "nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment) 22 | "plusplus" : false, // true: Prohibit use of `++` & `--` 23 | "quotmark" : false, // Quotation mark consistency: 24 | // false : do nothing (default) 25 | // true : ensure whatever is used is consistent 26 | // "single" : require single quotes 27 | // "double" : require double quotes 28 | "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks) 29 | "unused" : true, // true: Require all defined variables be used 30 | "strict" : false, // true: Requires all functions run in ES5 Strict Mode 31 | "maxparams" : false, // {int} Max number of formal params allowed per function 32 | "maxdepth" : false, // {int} Max depth of nested blocks (within functions) 33 | "maxstatements" : false, // {int} Max number statements per function 34 | "maxcomplexity" : false, // {int} Max cyclomatic complexity per function 35 | "maxlen" : false, // {int} Max number of characters per line 36 | 37 | // Relaxing 38 | "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons) 39 | "boss" : false, // true: Tolerate assignments where comparisons would be expected 40 | "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. 41 | "eqnull" : false, // true: Tolerate use of `== null` 42 | "es5" : false, // true: Allow ES5 syntax (ex: getters and setters) 43 | "esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`) 44 | "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features) 45 | // (ex: `for each`, multiple try/catch, function expression…) 46 | "evil" : false, // true: Tolerate use of `eval` and `new Function()` 47 | "expr" : false, // true: Tolerate `ExpressionStatement` as Programs 48 | "funcscope" : false, // true: Tolerate defining variables inside control statements 49 | "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict') 50 | "iterator" : false, // true: Tolerate using the `__iterator__` property 51 | "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block 52 | "laxbreak" : false, // true: Tolerate possibly unsafe line breakings 53 | "laxcomma" : false, // true: Tolerate comma-first style coding 54 | "loopfunc" : false, // true: Tolerate functions being defined in loops 55 | "multistr" : false, // true: Tolerate multi-line strings 56 | "noyield" : false, // true: Tolerate generator functions with no yield statement in them. 57 | "notypeof" : false, // true: Tolerate invalid typeof operator values 58 | "proto" : false, // true: Tolerate using the `__proto__` property 59 | "scripturl" : false, // true: Tolerate script-targeted URLs 60 | "shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;` 61 | "sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation 62 | "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;` 63 | "validthis" : false, // true: Tolerate using this in a non-constructor function 64 | 65 | // Environments 66 | "browser" : true, // Web Browser (window, document, etc) 67 | "browserify" : false, // Browserify (node.js code in the browser) 68 | "couch" : false, // CouchDB 69 | "devel" : true, // Development/debugging (alert, confirm, etc) 70 | "dojo" : false, // Dojo Toolkit 71 | "jasmine" : false, // Jasmine 72 | "jquery" : true, // jQuery 73 | "mocha" : true, // Mocha 74 | "mootools" : false, // MooTools 75 | "node" : false, // Node.js 76 | "nonstandard" : false, // Widely adopted globals (escape, unescape, etc) 77 | "prototypejs" : false, // Prototype and Scriptaculous 78 | "qunit" : false, // QUnit 79 | "rhino" : false, // Rhino 80 | "shelljs" : false, // ShellJS 81 | "worker" : false, // Web Workers 82 | "wsh" : false, // Windows Scripting Host 83 | "yui" : false, // Yahoo User Interface 84 | 85 | // Custom Globals 86 | "globals" : {} // additional predefined global variables 87 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 2.1 4 | script: ./script/cibuild.sh 5 | 6 | # branch whitelist 7 | branches: 8 | only: 9 | - gh-pages # test the gh-pages branch 10 | - /pages-(.*)/ # test every branch which starts with "pages-" 11 | 12 | env: 13 | global: 14 | - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | require 'json' 4 | require 'open-uri' 5 | versions = JSON.parse(open('https://pages.github.com/versions.json').read) 6 | 7 | gem 'github-pages', versions['github-pages'] -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | RedCloth (4.2.9) 5 | activesupport (~> 4.2.2) 6 | i18n (~> 0.7) 7 | json (~> 1.7, >= 1.7.7) 8 | minitest (~> 5.1) 9 | thread_safe (~> 0.3, >= 0.3.4) 10 | tzinfo (~> 1.1) 11 | blankslate (2.1.2.4) 12 | celluloid (0.16.0) 13 | timers (~> 4.0.0) 14 | classifier-reborn (2.0.2) 15 | fast-stemmer (~> 1.0) 16 | coffee-script (2.3.0) 17 | coffee-script-source 18 | execjs 19 | coffee-script-source (1.8.0) 20 | colorator (0.1) 21 | execjs (2.2.2) 22 | fast-stemmer (1.0.2) 23 | ffi (1.9.6) 24 | gemoji (2.1.0) 25 | github-pages (31) 26 | RedCloth (= 4.2.9) 27 | github-pages-health-check (~> 0.2) 28 | jekyll (= 2.4.0) 29 | jekyll-coffeescript (= 1.0.1) 30 | jekyll-mentions (= 0.2.1) 31 | jekyll-redirect-from (= 0.6.2) 32 | jekyll-sass-converter (= 1.2.0) 33 | jekyll-sitemap (= 0.6.3) 34 | jemoji (= 0.4.0) 35 | kramdown (= 1.3.1) 36 | liquid (= 2.6.1) 37 | maruku (= 0.7.0) 38 | mercenary (~> 0.3) 39 | pygments.rb (= 0.6.0) 40 | rdiscount (= 2.1.7) 41 | redcarpet (= 3.1.2) 42 | terminal-table (~> 1.4) 43 | github-pages-health-check (0.2.1) 44 | net-dns (~> 0.6) 45 | public_suffix (~> 1.4) 46 | hitimes (1.2.2) 47 | html-pipeline (1.9.0) 48 | activesupport (>= 2) 49 | nokogiri (~> 1.4) 50 | i18n (0.7.0) 51 | jekyll (2.4.0) 52 | classifier-reborn (~> 2.0) 53 | colorator (~> 0.1) 54 | jekyll-coffeescript (~> 1.0) 55 | jekyll-gist (~> 1.0) 56 | jekyll-paginate (~> 1.0) 57 | jekyll-sass-converter (~> 1.0) 58 | jekyll-watch (~> 1.1) 59 | kramdown (~> 1.3) 60 | liquid (~> 2.6.1) 61 | mercenary (~> 0.3.3) 62 | pygments.rb (~> 0.6.0) 63 | redcarpet (~> 3.1) 64 | safe_yaml (~> 1.0) 65 | toml (~> 0.1.0) 66 | jekyll-coffeescript (1.0.1) 67 | coffee-script (~> 2.2) 68 | jekyll-gist (1.1.0) 69 | jekyll-mentions (0.2.1) 70 | html-pipeline (~> 1.9.0) 71 | jekyll (~> 2.0) 72 | jekyll-paginate (1.1.0) 73 | jekyll-redirect-from (0.6.2) 74 | jekyll (~> 2.0) 75 | jekyll-sass-converter (1.2.0) 76 | sass (~> 3.2) 77 | jekyll-sitemap (0.6.3) 78 | jekyll-watch (1.2.0) 79 | listen (~> 2.7) 80 | jemoji (0.4.0) 81 | gemoji (~> 2.0) 82 | html-pipeline (~> 1.9) 83 | jekyll (~> 2.0) 84 | json (1.8.1) 85 | kramdown (1.3.1) 86 | liquid (2.6.1) 87 | listen (2.8.4) 88 | celluloid (>= 0.15.2) 89 | rb-fsevent (>= 0.9.3) 90 | rb-inotify (>= 0.9) 91 | maruku (0.7.0) 92 | mercenary (0.3.5) 93 | mini_portile (0.6.1) 94 | minitest (5.5.0) 95 | net-dns (0.8.0) 96 | nokogiri (1.6.5) 97 | mini_portile (~> 0.6.0) 98 | parslet (1.5.0) 99 | blankslate (~> 2.0) 100 | posix-spawn (0.3.9) 101 | public_suffix (1.4.6) 102 | pygments.rb (0.6.0) 103 | posix-spawn (~> 0.3.6) 104 | yajl-ruby (~> 1.1.0) 105 | rb-fsevent (0.9.4) 106 | rb-inotify (0.9.5) 107 | ffi (>= 0.5.0) 108 | rdiscount (2.1.7) 109 | redcarpet (3.1.2) 110 | safe_yaml (1.0.4) 111 | sass (3.4.9) 112 | terminal-table (1.4.5) 113 | thread_safe (0.3.4) 114 | timers (4.0.1) 115 | hitimes 116 | toml (0.1.2) 117 | parslet (~> 1.5.0) 118 | tzinfo (1.2.2) 119 | thread_safe (~> 0.1) 120 | yajl-ruby (~> 1.3.1) 121 | 122 | PLATFORMS 123 | ruby 124 | 125 | DEPENDENCIES 126 | github-pages (= 31) 127 | json 128 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 OpenStart.co 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenTheme 2 | 3 | Powerful new theme featuring Semantic UI for speedily creating amazing websites and mobile-hybrid apps on GitHub Pages. 4 | 5 | ## Getting Started 6 | 7 | ### Fork and Publish Direct from GitHub 8 | 9 | 1. Fork OpenTheme as your own repo 10 | 2. IMPORTANT: Edit _config.yml -> "API Keys" section to replace OpenTheme keys with your own 11 | 3. Edit and publish _posts, or _data, or pages directly from GitHub 12 | 13 | ### Local Setup 14 | 15 | ``` 16 | bundle install # Install Jekyll, Github Pages gems 17 | npm install # Install Gulp and dependences 18 | gulp # Build, test, serve and watch your local setup 19 | ``` 20 | 21 | IMPORTANT: Edit **_config.yml** -> "API Keys" section to replace OpenTheme keys with your own 22 | 23 | Optionally edit **gulpfile.js** -> BrowserSync host, port to your local setup 24 | 25 | Optionally, helper bash scripts available in **/scripts** folder. Use **shove.sh** to push changes to your repo. Use **clone.sh** to copy changes to GitHub Pages. 26 | 27 | ## File Structure 28 | 29 | ### Folders Pre-processed by GitHub Pages / Jekyll 30 | 31 | - **_includes** html partials reusable in layouts. 32 | - **_layouts** html layouts reusable in pages. 33 | - **_posts** Post types organized by folder. **apps** contains single page apps. **blog** contains blog posts. 34 | - **_data** Static data files including YAML Front Matter, CSV, JSON formats usable by GitHub Pages sites. 35 | 36 | ### Asset Folders 37 | 38 | - **js** add site specific JavaScript to custom.js. Vendor libraries are added as minified where available. 39 | - **css** add site specific CSS to custom.css. Vendor libraries are added as minified where available. Contains folders for assets referenced by custom or vendor css. 40 | - **img** image assets. 41 | 42 | ### Development Automation 43 | 44 | - **script** Automation shell scripts for development, testing. [TO DO] Replace with Gulp pipeline automation, E2E, Lint tests. 45 | 46 | ### Files 47 | 48 | - **Gemfile** defines gems required for creating local Jekyll building and serving "like" how GitHub Pages would. 49 | 50 | ## Dependencies 51 | 52 | - Semantic UI 53 | - Jekyll 54 | 55 | ## Reference Projects 56 | 57 | Study following projects for best practices. 58 | 59 | ### Jekyll built sites and themes 60 | 61 | - [Jekyll website](http://jekyllrb.com/) 62 | - GitHub Pages themes 63 | - [Lanyon](https://github.com/poole/lanyon) 64 | - [Jekyll Themes](http://jekyllthemes.org/) 65 | 66 | ### GitHub hosted sites 67 | 68 | - [Semantic UI website](http://www.semantic-ui.com) 69 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Site settings 2 | 3 | title: Powerful New Theme for GitHub Pages | OpenTheme.co 4 | tagline: Amazing Websites and Hybrid Apps. Speedily! 5 | email: sehgal.manav@gmail.com 6 | copyright: Manav Sehgal 7 | keywords: open theme, github pages, semantic ui, single page apps 8 | 9 | description: > # this means to ignore newlines until "url:". One indent required. 10 | Powerful new theme featuring Semantic UI for speedily creating amazing websites and mobile-hybrid apps on GitHub Pages. 11 | 12 | # the base hostname & protocol for your site 13 | url: "http://opentheme.co" 14 | 15 | twitter_username: manavsehgal 16 | github_username: manavsehgal 17 | 18 | default_image: /img/opentheme-workflow.png 19 | 20 | # Pre-processing 21 | 22 | markdown: kramdown 23 | highlighter: pygments 24 | safe: true 25 | permalink: pretty # YYYY/MM/DD/page-title/index.html 26 | lsi: true # Lexical analysis (true) takes longer for higher quality 27 | # sass: 28 | # style: :compressed 29 | 30 | # Exclude from Jekyll processing 31 | 32 | exclude: ["vendor", "README.md", "node_modules", "gulpfile.js", "package.json"] 33 | 34 | # Lists 35 | 36 | tag_items: 20 # Applies to categories and tags lists 37 | recent_items: 10 # Applies to recent posts, apps lists 38 | related_items: 5 # Applies to related posts and apps lists 39 | 40 | # Layout 41 | 42 | pagebar: true # Show (true) page sidebar menu or hide (false) 43 | postbar: true # Show (true) post sidebar or hide (false) 44 | 45 | # Features 46 | 47 | reading_time: true # Show est. reading time for posts 48 | facebook: false # Use facebook features 49 | comments: disqus # Switch disqus | facebook | none - comments. facebook = true required for facebook comments 50 | 51 | # Embeds 52 | 53 | disqus_name: opentheme # Your site name at Disqus 54 | 55 | youtube_controls: 0 # Turn on=1/off=0 Youtube player features when embedding videos 56 | 57 | google_map_zoom: 16 # 1=Global zoom 18=Street Level 58 | google_map_view: satellite # hybrid | satellite | roadmap 59 | google_map_height: 450 # Default map height. Width adjusts to container. 60 | 61 | # API Keys. PLEASE DO NOT USE THESE KEYS. Get your own at links in comments. 62 | 63 | google_api_key: "AIzaSyDmt_iRsE8kQ1glUPC2GZpNLBsw1Laj9_0" # https://code.google.com/apis/console/ 64 | google_analytics_ua: "UA-57703915-1" # Google Analytics site specific id 65 | google_cse_id: "012558675018178618302:kw1_r8qgyqc" # Google Custom Search Engine unique id 66 | 67 | mapbox: "pk.eyJ1Ijoib3BlbnRoZW1lIiwiYSI6ImNIWC1LTUUifQ.vq4k3nfTeTtDAk7eLCrVAw" 68 | 69 | facebook_app: "390272554479803" # https://developers.facebook.com/ 70 | 71 | mailchimp_u: "cf72d9276397b3175b874eb39" # Mailchimp u=unique identification 72 | mailchimp_id: "3a51637dcc" # Mailchip id 73 | 74 | addthis_pubid: "ra-54a66cfa35915034" # Get your pubid at https://www.addthis.com/dashboard 75 | 76 | pingdom_rum: "54a97d8aabe53daf361855a6" # https://my.pingdom.com/dashboard. Real User experience (speed) monitoring. 77 | 78 | uservoice: "nvdgD40UtxnMoshpVHYxg" -------------------------------------------------------------------------------- /_data/embeds.yml: -------------------------------------------------------------------------------- 1 | # Official name of embed 2 | - name: Embedded Tweets 3 | # Description of embed 4 | about: An Embedded Tweet brings brings the best content created on Twitter into your article or website. 5 | # Social, News, Doc, RSS, Video, Photo, Graphic, Map 6 | group: Social 7 | # Image used in card view 8 | image: /img/embed/twitter-bird.jpg 9 | # Icon used in table view. Refer http://semantic-ui.com/elements/icon.html 10 | icon: twitter 11 | # Site, Layout, Post configurable. None, if per use case. 12 | scope: None 13 | # true/false = Is the embed UI responsive 14 | responsive: true 15 | # Does the embed work well on Jekyll and Github Pages 16 | jekyll_friendly: true 17 | # Rating based on popularity, features 18 | rating: 5 19 | # Link to to create embed 20 | create: https://twitter.com/ 21 | # Link to embed docs 22 | docs: https://dev.twitter.com/web/embedded-tweets 23 | # URL to usecase 24 | usecase: /theme/2014/11/29/starter-post-twitter-embed/ 25 | 26 | - name: AddThis Social Buttons 27 | about: Social sharing buttons from AddThis service. Fast, configurable, responsive social sharing buttons. 28 | group: Social 29 | image: /img/embed/addthis.png 30 | icon: facebook 31 | scope: Site 32 | responsive: true 33 | jekyll_friendly: true 34 | rating: 5 35 | create: https://www.addthis.com/dashboard 36 | docs: https://www.addthis.com/blog 37 | usecase: /theme/2014/12/01/starter-post/ 38 | 39 | - name: Disqus Social 40 | about: If you’re passionate about writing and sharing, Disqus helps you build an active community. 41 | group: Social 42 | image: /img/embed/disqus-splash.png 43 | icon: share alternate square 44 | scope: Site 45 | responsive: true 46 | jekyll_friendly: true 47 | rating: 4 48 | create: https://disqus.com/admin/signup/?utm_source=New-Site 49 | docs: https://disqus.com/websites/ 50 | usecase: /workflow/2014/11/26/open-cloud-based-workflow-for-designing-your-website/ 51 | 52 | - name: YouTube Video 53 | about: Embed YouTube video player using custom OpenTheme embed tag. Player features are site configurable. 54 | group: Video 55 | image: /img/embed/youtube-splash.png 56 | icon: film 57 | scope: Post 58 | responsive: false 59 | jekyll_friendly: true 60 | rating: 5 61 | create: https://www.youtube.com/ 62 | docs: https://support.google.com/youtube/answer/171780?hl=en 63 | usecase: /theme/2014/11/24/starter-post-media-embed/ 64 | 65 | - name: UserVoice 66 | about: User feedback, idea voting, customer helpdesk and support widget that can be added to any page. 67 | group: Social 68 | image: /img/embed/uservoice.png 69 | icon: announcement 70 | scope: Site 71 | responsive: true 72 | jekyll_friendly: true 73 | rating: 5 74 | create: https://www.uservoice.com/ 75 | docs: https://developer.uservoice.com/ 76 | usecase: /apps/ 77 | 78 | - name: Google Map 79 | about: You can embed Google maps using custom embed created for OpenTheme. Just provide location. 80 | group: Map 81 | image: /img/embed/map.png 82 | icon: pin 83 | scope: Post 84 | responsive: true 85 | jekyll_friendly: true 86 | rating: 5 87 | create: https://developers.google.com/maps/documentation/embed/start 88 | docs: https://developers.google.com/maps/documentation/embed/guide 89 | usecase: /theme/2014/12/05/starter-post-google-map-embed/ 90 | 91 | - name: Panoramio Maps 92 | about: Add geo-tagged photo search to maps, along with autocomplete places search. Reusable layout. 93 | group: Map 94 | image: /img/embed/panoramio.png 95 | icon: pin 96 | scope: Layout 97 | responsive: true 98 | jekyll_friendly: true 99 | rating: 5 100 | create: /panoramio/ 101 | docs: https://developers.google.com/maps/documentation/embed/start 102 | usecase: /panoramio/ 103 | 104 | - name: MailChimp 105 | about: Add MailChimp signup forms with OpenTheme UI. Reuse across site with text variations. 106 | group: Mail 107 | image: /img/embed/mailchimp.png 108 | icon: mail 109 | scope: Post 110 | responsive: true 111 | jekyll_friendly: true 112 | rating: 3 113 | create: http://mailchimp.com/ 114 | docs: http://mailchimp.com/resources/ 115 | usecase: http://opentheme.co 116 | 117 | - name: FlexSlider 118 | about: An awesome, fully responsive jQuery slider toolkit. Custom OpenTheme layout, include, and demo. 119 | group: Media 120 | image: /img/embed/flexslider.png 121 | icon: play 122 | scope: Layout 123 | responsive: true 124 | jekyll_friendly: true 125 | rating: 4 126 | create: /apps/ 127 | docs: http://www.woothemes.com/flexslider/ 128 | usecase: /apps/ 129 | 130 | - name: Google Custom Search 131 | about: Google custom search engine enables powerful search features for GitHub Pages websites. 132 | group: Search 133 | image: /img/embed/google-cse.png 134 | icon: search 135 | scope: Site 136 | responsive: true 137 | jekyll_friendly: true 138 | rating: 5 139 | create: https://www.google.co.in/cse/all 140 | docs: https://www.google.co.in/cse/docs/all 141 | usecase: "/search/?q=theme" 142 | -------------------------------------------------------------------------------- /_data/metrics.yml: -------------------------------------------------------------------------------- 1 | - title: PageSpeed Insights - Mobile Speed 2 | source: "https://developers.google.com/speed/pagespeed/insights/?url=opentheme.co&tab=mobile" 3 | category: Performance 4 | current: 40 5 | type: Percent 6 | evaluate: "Mobile PageSpeed" 7 | show: true 8 | 9 | - title: PageSpeed Insights - Desktop Speed 10 | source: "https://developers.google.com/speed/pagespeed/insights/?url=opentheme.co&tab=desktop" 11 | category: Performance 12 | current: 70 13 | type: Percent 14 | evaluate: "Desktop PageSpeed" 15 | show: true 16 | 17 | - title: PageSpeed Insights - Mobile User Experience 18 | source: "https://developers.google.com/speed/pagespeed/insights/?url=opentheme.co&tab=mobile" 19 | category: Usability 20 | current: 95 21 | type: Percent 22 | evaluate: "Mobile Experience" 23 | show: true 24 | 25 | - title: Google Webmaster Tools - Mobile Friendly Website 26 | source: "https://www.google.com/webmasters/tools/mobile-friendly/?url=opentheme.co" 27 | category: Usability 28 | current: "Pass" 29 | target: Should pass as mobile-friendly page. 30 | type: Pass/Fail 31 | evaluate: "Mobile-friendly" 32 | show: true 33 | 34 | - title: Reusable Embed Plugins 35 | category: Reusability 36 | source: "/embeds/" 37 | type: Liquid 38 | evaluate: "Reusable Plugins" 39 | show: true 40 | 41 | - title: Reusable Page Templates 42 | category: Reusability 43 | source: "#" 44 | type: Liquid 45 | evaluate: "Templates" 46 | show: true 47 | 48 | - title: Reusable Single Page App Demos 49 | category: Reusability 50 | source: "/apps/" 51 | type: Liquid 52 | evaluate: "Single Page Apps" 53 | show: true 54 | 55 | - title: OpenTheme Tutorials and Articles 56 | category: Learnability 57 | source: "/category/#theme" 58 | type: Liquid 59 | evaluate: "Theme Tutorials" 60 | show: true 61 | 62 | - title: Travis Continuous Integration Status 63 | category: Reliability 64 | source: "https://travis-ci.org/open-start/opentheme" 65 | badge: "https://travis-ci.org/open-start/opentheme.svg" 66 | type: Badge 67 | evaluate: "Travis Build Status" 68 | show: true -------------------------------------------------------------------------------- /_images/app/fusion-grid-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/app/fusion-grid-chart.png -------------------------------------------------------------------------------- /_images/app/fusion-grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/app/fusion-grid.png -------------------------------------------------------------------------------- /_images/app/fusion-map-grid-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/app/fusion-map-grid-chart.png -------------------------------------------------------------------------------- /_images/app/kml-sandy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/app/kml-sandy.png -------------------------------------------------------------------------------- /_images/blog/open-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/blog/open-workflow.png -------------------------------------------------------------------------------- /_images/embed/addthis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/addthis.png -------------------------------------------------------------------------------- /_images/embed/disqus-splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/disqus-splash.png -------------------------------------------------------------------------------- /_images/embed/flexslider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/flexslider.png -------------------------------------------------------------------------------- /_images/embed/google-cse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/google-cse.png -------------------------------------------------------------------------------- /_images/embed/mailchimp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/mailchimp.png -------------------------------------------------------------------------------- /_images/embed/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/map.png -------------------------------------------------------------------------------- /_images/embed/panoramio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/panoramio.png -------------------------------------------------------------------------------- /_images/embed/twitter-bird.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/twitter-bird.jpg -------------------------------------------------------------------------------- /_images/embed/uservoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/uservoice.png -------------------------------------------------------------------------------- /_images/embed/youtube-splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/embed/youtube-splash.png -------------------------------------------------------------------------------- /_images/opentheme-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/opentheme-workflow.png -------------------------------------------------------------------------------- /_images/wireframe/centered-paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/centered-paragraph.png -------------------------------------------------------------------------------- /_images/wireframe/image-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/image-square.png -------------------------------------------------------------------------------- /_images/wireframe/image-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/image-text.png -------------------------------------------------------------------------------- /_images/wireframe/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/image.png -------------------------------------------------------------------------------- /_images/wireframe/media-paragraph-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/media-paragraph-alt.png -------------------------------------------------------------------------------- /_images/wireframe/media-paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/media-paragraph.png -------------------------------------------------------------------------------- /_images/wireframe/paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/paragraph.png -------------------------------------------------------------------------------- /_images/wireframe/short-paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/short-paragraph.png -------------------------------------------------------------------------------- /_images/wireframe/square-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/square-image.png -------------------------------------------------------------------------------- /_images/wireframe/text-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/text-image.png -------------------------------------------------------------------------------- /_images/wireframe/white-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/_images/wireframe/white-image.png -------------------------------------------------------------------------------- /_includes/disqus.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 14 | 15 | -------------------------------------------------------------------------------- /_includes/embed-cards.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {% if include.cards %} 4 | {% assign count = include.cards %} 5 | {% else %} 6 | {% assign count = site.recent_items %} 7 | {% endif %} 8 | 9 | {% for embed in site.data.embeds limit:count %} 10 |
11 |
12 |
13 |
14 |
15 |
16 | View Example 17 |
18 |
19 |
20 | {{ embed.name }} 21 |
22 |
23 |
{{ embed.name }}
24 |
25 |
26 | {{ embed.group }} 27 |
28 |
29 | 30 |
31 |
32 | {{ embed.about }} 33 |
34 |
35 | 36 |
37 | {% if embed.responsive %} 38 | 39 | {% endif %} 40 | {% if embed.jekyll_friendly %} 41 | 42 | {% endif %} 43 | {% if embed.scope == 'Site' %} 44 | 45 | {% endif %} 46 | {% if embed.scope == 'Post' %} 47 | 48 | {% endif %} 49 | {% if embed.scope == 'Layout' %} 50 | 51 | {% endif %} 52 |
53 | | 54 | 55 |
56 |
57 | 58 | 59 |
60 |
61 | {% endfor %} 62 |
-------------------------------------------------------------------------------- /_includes/embed-google-analytics.html: -------------------------------------------------------------------------------- 1 | {% if site.google_analytics_ua %} 2 | 11 | {% endif %} -------------------------------------------------------------------------------- /_includes/embed-google-map.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_includes/embed-mailchimp.html: -------------------------------------------------------------------------------- 1 | {% if site.mailchimp_id and site.mailchimp_u %} 2 | 3 |
4 |
5 |

{{ include.tagline }}

6 |
7 |
8 | 9 | 10 |
11 |
12 | 13 | 14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 | 22 | 23 | {% endif %} -------------------------------------------------------------------------------- /_includes/embed-youtube.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_includes/fb-button.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /_includes/fb-comments.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /_includes/fb-setup.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /_includes/feature-post.html: -------------------------------------------------------------------------------- 1 | {% for post in site.posts %} 2 | {% if post.tags %} 3 | {% for tag in post.tags %} 4 | {% if tag == 'feature' %} 5 |
6 | 7 |

{{post.title}}

8 |
9 | {% if post.image %} 10 |
11 | 12 | {{ post.title }} 13 | 14 |
15 | {% endif %} 16 | 17 |
Read More
18 | 19 |
20 |
21 | {% endif %} 22 | {% endfor %} 23 | {% endif %} 24 | {% endfor %} 25 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 53 | 54 | 57 | -------------------------------------------------------------------------------- /_includes/fusion-filter-grid.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 | 7 | Filter 8 |
9 |
10 |
11 |
12 | 13 |
14 | 15 | {% if page.chart == 'bar' %} 16 |
17 | {% endif %} -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {% if page.title == "Home" %} 17 | {% capture title_tag %}{{ site.tagline }}{% endcapture %} 18 | {% else %} 19 | {% capture title_tag %}{{ page.title }}{% endcapture %} 20 | {% endif %} 21 | 22 | {{ title_tag }} · {{ site.title }} 23 | 24 | 25 | 26 | {% if site.facebook %} 27 | 28 | {% endif %} 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | {% if page.layout == 'post' %} 44 | 45 | {% else %} 46 | 47 | {% endif %} 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | {% if site.pingdom_rum %} 61 | 72 | {% endif %} -------------------------------------------------------------------------------- /_includes/home-header.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 | 6 | {% include menu.html %} 7 | 8 |

{{ site.tagline }}

9 | 10 |
11 | 12 |
13 |
14 | 15 | {% include embed-mailchimp.html tagline="Join The OpenTheme Club" button="Get Free Updates!" %} 16 |
17 |
18 |

{{ site.description }}

19 |
20 |
21 |
22 |
23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /_includes/js.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 54 | 55 | {% if site.uservoice %} 56 | 99 | {% endif %} -------------------------------------------------------------------------------- /_includes/kml-viewer.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /_includes/landing-header.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 | 6 | {% include menu.html %} 7 | 8 | 9 |
10 |

{{ page.title }}

11 |

{{ page.description }}

12 |
13 | 14 |
15 |
16 |
17 | 18 | -------------------------------------------------------------------------------- /_includes/menu.html: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /_includes/metrics-liquid.html: -------------------------------------------------------------------------------- 1 | {% case include.evaluate %} 2 | 3 | {% when 'Reusable Plugins' %} 4 | 5 |
6 | {{ site.data.embeds | size }} 7 |
8 |
9 | {{ include.evaluate }} 10 |
11 |
12 | 13 | {% when 'Single Page Apps' %} 14 | 15 |
16 | {{ site.categories.app | size }} 17 |
18 |

19 | {{ include.evaluate }} 20 |

21 |
22 | 23 | {% when 'Templates' %} 24 | 25 |
26 | {{ site.pages | size }} 27 |
28 |
29 | {{ include.evaluate }} 30 |
31 |
32 | 33 | {% when 'Theme Tutorials' %} 34 | 35 |
36 | {{ site.categories.theme | size }} 37 |
38 |
39 | {{ include.evaluate }} 40 |
41 |
42 | 43 | {% else %} 44 | 45 | 46 | {% endcase %} 47 | 48 | -------------------------------------------------------------------------------- /_includes/metrics-percent.html: -------------------------------------------------------------------------------- 1 | {% if include.source %} 2 | 3 |
4 | {{ include.current }} 5 |
6 |
7 | {{ include.evaluate }} 8 |
9 |
10 | 11 | {% else %} 12 | 13 |
14 |
15 |
16 | {% endif %} -------------------------------------------------------------------------------- /_includes/page-bar.html: -------------------------------------------------------------------------------- 1 | 47 | -------------------------------------------------------------------------------- /_includes/post-bar.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 |

Get Free Updates

6 |
7 | {% include embed-mailchimp.html tagline="Practical content strategies. Website best practices." button="Subscribe Now!" %} 8 |
9 |
10 | 11 |
12 |
13 |

Related

14 |
15 | {% include related-posts.html %} 16 |
17 |
18 |
19 |
20 |

Tags

21 |
22 | {% include site-tags.html %} 23 |
24 |
25 |
26 |
27 |

Categories

28 |
29 | {% include site-categories.html %} 30 |
31 |
32 |
33 | -------------------------------------------------------------------------------- /_includes/post-header.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 | 6 | {% include menu.html %} 7 | 8 | 9 |
10 | 11 |

12 | {{ page.title }} 13 |

14 |
15 |

{{ page.excerpt | strip_html }}

16 |

17 | {{ page.date | date: "%b %-d, %Y" }} 18 | {% if page.author %} • {{ page.author }}{% endif %} 19 | 20 | {% if site.reading_time %} 21 | 22 | {% capture content_length %} 23 | {{ page.content | number_of_words | minus:180 }} 24 | {% endcapture %} 25 | {% if content_length contains '-' %} 26 | • < 1 min to read 27 | {% else %} 28 | • ~ {{ page.content | number_of_words | divided_by:180 }} min to read 29 | {% endif %} 30 | {% endif %} 31 | 32 | {% if page.tags %} 33 | • 34 | {% for tag in page.tags %} 35 | {{ tag }} 36 | {% endfor %} 37 | {% endif %} 38 |

39 | 40 | {% if site.facebook %} 41 |

42 | {% include fb-button.html %} 43 |

44 | {% endif %} 45 |
46 | 47 |
48 |
49 |
50 | 51 | -------------------------------------------------------------------------------- /_includes/posts-paginator.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | {% if page.previous.url %} 4 | 6 | 7 | Previous Post 8 | 9 | {% endif %} 10 | {% if page.next.url %} 11 | 13 | 14 | Next Post 15 | 16 | {% endif %} 17 |
18 | -------------------------------------------------------------------------------- /_includes/recent-apps.html: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | -------------------------------------------------------------------------------- /_includes/recent-posts.html: -------------------------------------------------------------------------------- 1 |
2 | {% for post in site.posts limit:site.recent_items %} 3 | {% capture first_tag %}{{ post.tags | first }}{% endcapture %} 4 | {% if first_tag != 'feature' and post.category != 'app' %} 5 | {% if post.category %}{{ post.category }}{% endif %} 6 | 7 |
{{ post.title }}
8 | {% if post.image %} 9 |
10 | {{ post.title }} 11 |
12 | {% else %} 13 | {{post.excerpt}} 14 | {% endif %} 15 |
{{ post.date | date: "%b %-d, %Y" }}
16 |
17 | {% endif %} 18 | {% endfor %} 19 |
20 | -------------------------------------------------------------------------------- /_includes/related-posts.html: -------------------------------------------------------------------------------- 1 |
2 | {% for post in site.related_posts limit:site.related_items %} 3 | {% if page.title != post.title %} 4 | {% if post.category %}{{ post.category }}{% endif %} 5 | 6 |
{{ post.title }}
7 | {% if post.image %} 8 |
9 | {{ post.title }} 10 |
11 | {% else %} 12 | {{post.excerpt}} 13 | {% endif %} 14 |
{{ post.date | date: "%b %-d, %Y" }}
15 |
16 | {% endif %} 17 | {% endfor %} 18 |
19 | -------------------------------------------------------------------------------- /_includes/site-categories.html: -------------------------------------------------------------------------------- 1 | {% for category in site.categories limit:site.recent_items %} 2 | {{ category | first }}
{{ category | last | size }}
3 | {% endfor %} 4 | -------------------------------------------------------------------------------- /_includes/site-tags.html: -------------------------------------------------------------------------------- 1 | {% for tag in site.tags limit:site.recent_items %} 2 | {{ tag | first }}
{{ tag | last | size }}
3 | {% endfor %} 4 | -------------------------------------------------------------------------------- /_includes/slider-header.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 | {% include menu.html %} 6 |
7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /_layouts/fusion.html: -------------------------------------------------------------------------------- 1 | {% include head.html %} 2 | 54 | 55 | 56 | 57 | 60 | {% if site.facebook %} 61 | {% include fb-setup.html %} 62 | {% endif %} 63 | 64 | {% if site.pagebar %} 65 | {% include page-bar.html %} 66 |
67 | {% endif %} 68 | {% include landing-header.html %} 69 |
70 |
71 |
72 |
73 | {{ content }} 74 |
75 |
76 |
77 |
78 | {% include footer.html %} 79 | {% if site.pagebar %} 80 |
81 | {% endif %} 82 | 83 | {% include js.html %} 84 | 85 | 86 | 87 | 88 | 194 | 195 | {% include embed-google-analytics.html %} 196 | 197 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /_layouts/kitchen.html: -------------------------------------------------------------------------------- 1 | {% include head.html %} 2 | 39 | 40 | 41 | 42 | 45 | 46 | {% if site.facebook %} 47 | {% include fb-setup.html %} 48 | {% endif %} 49 | 50 | {% if site.pagebar %} 51 | {% include page-bar.html %} 52 |
53 | {% endif %} 54 | {% include landing-header.html %} 55 | {{ content }} 56 | {% include footer.html %} 57 | {% if site.pagebar %} 58 |
59 | {% endif %} 60 | 61 | {% include js.html %} 62 | {% include embed-google-analytics.html %} 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /_layouts/landing.html: -------------------------------------------------------------------------------- 1 | {% include head.html %} 2 | 3 | 4 | 7 | 8 | {% if site.facebook %} 9 | {% include fb-setup.html %} 10 | {% endif %} 11 | 12 | {% if site.pagebar %} 13 | {% include page-bar.html %} 14 |
15 | {% endif %} 16 | {%if page.title == 'Home' %} 17 | {% include home-header.html %} 18 | {% else %} 19 | {% include landing-header.html %} 20 | {% endif %} 21 | {{ content }} 22 | {% include footer.html %} 23 | {% if site.pagebar %} 24 |
25 | {% endif %} 26 | 27 | {% include js.html %} 28 | {% include embed-google-analytics.html %} 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /_layouts/metrics-layout.html: -------------------------------------------------------------------------------- 1 | {% include head.html %} 2 | 3 | 4 | 7 | 8 | {% if site.facebook %} 9 | {% include fb-setup.html %} 10 | {% endif %} 11 | 12 | {% if site.pagebar %} 13 | {% include page-bar.html %} 14 |
15 | {% endif %} 16 | {% include landing-header.html %} 17 | {{ content }} 18 | {% include footer.html %} 19 | {% if site.pagebar %} 20 |
21 | {% endif %} 22 | 23 | {% include js.html %} 24 | 25 | 26 | 27 | 28 | {% include embed-google-analytics.html %} 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /_layouts/panoramio.html: -------------------------------------------------------------------------------- 1 | {% include head.html %} 2 | 3 | 59 | 60 | 61 | 62 | 63 | 64 | 67 | 68 | {% if site.facebook %} 69 | {% include fb-setup.html %} 70 | {% endif %} 71 | 72 | {% if site.pagebar %} 73 | {% include page-bar.html %} 74 |
75 | {% endif %} 76 | {% include landing-header.html %} 77 | {{ content }} 78 | {% include footer.html %} 79 | {% if site.pagebar %} 80 |
81 | {% endif %} 82 | 83 | {% include js.html %} 84 | 85 | 86 | 87 | 209 | 210 | {% include embed-google-analytics.html %} 211 | 212 | 213 | 214 | 215 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | {% include head.html %} 2 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | {% if site.facebook %} 26 | {% include fb-setup.html %} 27 | {% endif %} 28 | 29 | {% if site.pagebar %} 30 | {% include page-bar.html %} 31 |
32 | {% endif %} 33 | {% include post-header.html %} 34 |
35 |
36 | {% if site.postbar %} 37 |
38 | {% else %} 39 |
40 | {% endif %} 41 | {% if page.image %} 42 | {{ page.title }} 43 | {% endif %} 44 | {{ content }} 45 | {% include posts-paginator.html %} 46 | 47 | {% if site.comments == 'disqus' %} 48 |
49 | {% include disqus.html %} 50 | {% elsif site.facebook and site.comments == 'facebook' %} 51 |
52 | {% include fb-comments.html %} 53 | {% endif %} 54 | 55 |
56 | {% if site.postbar %} 57 |
58 | {% include post-bar.html %} 59 |
60 | {% endif %} 61 |
62 |
63 | {% include footer.html %} 64 | {% if site.pagebar %} 65 |
66 | {% endif %} 67 | 68 | {% include js.html %} 69 | 70 | 79 | 80 | {% if site.addthis_pubid %} 81 | 82 | 83 | {% endif %} 84 | 85 | {% include embed-google-analytics.html %} 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /_layouts/slider.html: -------------------------------------------------------------------------------- 1 | {% include head.html %} 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | {% if site.facebook %} 12 | {% include fb-setup.html %} 13 | {% endif %} 14 | 15 | {% if site.pagebar %} 16 | {% include page-bar.html %} 17 |
18 | {% endif %} 19 | {% include slider-header.html %} 20 | {{ content }} 21 | {% include footer.html %} 22 | {% if site.pagebar %} 23 |
24 | {% endif %} 25 | 26 | {% include js.html %} 27 | 28 | 29 | 37 | 38 | {% include embed-google-analytics.html %} 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /_posts/apps/2014-12-19-fusion-grid-sport-scores.md: -------------------------------------------------------------------------------- 1 | --- 2 | # App Options 3 | layout: fusion 4 | title: Fusion Grid - Sport Scores 5 | description: Data Grid displaying data from Google Fusion Tables 6 | category: app 7 | image: /img/app/fusion-grid.png 8 | # Grid Options 9 | select: "'Scoring Team' as Scoring, 'Minute of goal' as Minute, 'Receiving Team' as Receiving" 10 | from: "1VlPiBCkYt_Vio-JT3UwM-U__APurJvPb6ZEJPg" 11 | filter: "Scoring Team" 12 | --- 13 | This is a sport scores sample app created using Fusion Tables. 14 | 15 | Three simple steps to create this app. 16 | 17 | 1. Add one simple _include statement. 18 | 2. Specify the SELECT query identifying the Fusion Table by unique id. 19 | 3. Name the field to filter as Frontmatter, and you are done. 20 | 21 | {% include fusion-filter-grid.html %} 22 | 23 | You can author this single page app using Markdown. Pull data source from Google Fusion Tables. 24 | Visuaize and interact with the data source using Google Visualization API. 25 | 26 | Features include: 27 | 28 | - Data grid that updates as the source data on Fusion Tables changes. 29 | - Filter on any field within the data source. 30 | - Filter UI control designed using Semantic UI. 31 | - Sort any column by clicking. 32 | - Paginate large data sets. 33 | - Serve from GitHub using Jekyll content workflow. 34 | - Reusable _layout for Fusion Grid Filter apps. 35 | - Reusable _include for filter and table control. 36 | - JS parametrized to YAML Frontmatter. No changes required for new data sources. -------------------------------------------------------------------------------- /_posts/apps/2014-12-20-fusion-grid-chart-coffee-production.md: -------------------------------------------------------------------------------- 1 | --- 2 | # App Options 3 | layout: fusion 4 | title: Fusion Grid Chart - Coffee Production 5 | description: Data Grid and Chart Dashboard Displaying Data from Google Fusion Tables 6 | author: Manav Sehgal 7 | category: app 8 | image: /img/app/fusion-grid-chart.png 9 | # Grid Options 10 | select: "Country, '2000/01' as Y2000, '2001/02' as Y2001, '2002/03' as Y2002, '2003/04' as Y2003, '2004/05' as Y2004, '2005/06' as Y2005, '2006/07' as Y2006, '2007/08' as Y2007, '2008/09' as Y2008" 11 | from: "12Ky51FcTdAPYsnP42k3N4AtEB8EcxxfLMJ5rAnU" 12 | filter: "Country" 13 | # Chart Options 14 | chart: bar 15 | compare: "Coffee Production" 16 | chart_height: 1200 17 | --- 18 | This is a coffee production sample app created using Fusion Tables. 19 | Filter on part or full country name, or common text in multiple countries to update custom dashboard chart. 20 | 21 | This app example adds only three Frontmatter values to Fusion Grid app. 22 | Chart type, Horizontal Axis Title to compare values, Custom height of the chart. 23 | 24 | {% include fusion-filter-grid.html %} 25 | -------------------------------------------------------------------------------- /_posts/apps/2014-12-20-fusion-map-grid-chart-coffee-production.md: -------------------------------------------------------------------------------- 1 | --- 2 | # App Options 3 | layout: fusion 4 | title: Fusion Map Grid Chart - Coffee Production 5 | description: Data Map, Grid and Chart Dashboard Displaying Data from Google Fusion Tables 6 | category: app 7 | image: /img/app/fusion-map-grid-chart.png 8 | # Grid Options 9 | select: "Country, '2000/01' as Y2000, '2001/02' as Y2001, '2002/03' as Y2002, '2003/04' as Y2003, '2004/05' as Y2004, '2005/06' as Y2005, '2006/07' as Y2006, '2007/08' as Y2007, '2008/09' as Y2008" 10 | from: "12Ky51FcTdAPYsnP42k3N4AtEB8EcxxfLMJ5rAnU" 11 | filter: "Country" 12 | # Chart Options 13 | chart: bar 14 | compare: "Coffee Production" 15 | chart_height: 1200 16 | --- 17 | This is a coffee production sample app created using Fusion Tables. 18 | Filter on part or full country name, or common text in multiple countries to update custom dashboard chart. 19 | 20 | This app example adds embed iframe from Fusion Tables for visualizing the map representing the data. 21 | Only change required is width/height values to match page theme. 22 | Suggested 100% width for responsive view. Height to adjust to map data. 23 | 24 | 26 | 27 | {% include fusion-filter-grid.html %} 28 | -------------------------------------------------------------------------------- /_posts/apps/2015-01-07-geo-visualization-sandy-and-airports.md: -------------------------------------------------------------------------------- 1 | --- 2 | # App Options 3 | layout: fusion 4 | title: Geo Visualization - Sandy and Airports 5 | description: KML Map, Fusion Grid displaying live data. Hurricane Sandy impact cone, world Airport locations, and busiest airports. 6 | category: app 7 | image: /img/app/kml-sandy.png 8 | 9 | # Grid Options 10 | select: "col1, col2 as Location, col4" 11 | from: "1hcqyroMjYXZfCqDTUq2nmhgwzG13W-BRzNXyaEk" 12 | filter: "Location" 13 | 14 | # KML Options 15 | layers: 16 | - kml: "http://opentheme.co/static-data/WorldAirports.kml" 17 | - kml: "http://opentheme.co/static-data/287257.kml" 18 | --- 19 | 20 | {% include kml-viewer.html %} 21 | {% include fusion-filter-grid.html %} 22 | 23 |
24 | 25 | This app was created with "zero coding". It is created simply from configuration, 26 | using live open data sources, and reusing plugins created for OpenTheme. 27 | 28 | {% highlight liquid linenos %} 29 | {% raw %} 30 | 31 | --- 32 | # App Options 33 | layout: fusion 34 | title: Geo Visualization - Sandy and Airports 35 | description: KML Map, Fusion Grid displaying live data... 36 | category: app 37 | 38 | # Grid Options 39 | select: "col1, col2 as Location, col4" 40 | from: "1hcqyroMjYXZfCqDTUq2nmhgwzG13W-BRzNXyaEk" 41 | filter: "Location" 42 | 43 | # KML Options 44 | layers: 45 | - kml: "http://opentheme.co/static-data/WorldAirports.kml" 46 | - kml: "http://opentheme.co/static-data/287257.kml" 47 | --- 48 | 49 | {% include kml-viewer.html %} 50 | {% include fusion-filter-grid.html %} 51 | 52 | {% endraw %} 53 | {% endhighlight %} 54 | -------------------------------------------------------------------------------- /_posts/blog/2014-11-24-starter-post-media-embed.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | category: theme 5 | title: "Starter Post - Media Embeds" 6 | tags: media embeds 7 | image: /img/embed/youtube-splash.png 8 | --- 9 | 10 | You can embed YouTube video in a post using custom embed tag designed in Liquid markup. 11 | 12 | Here is an example of a custom embed available as a configurable _include with OpenTheme. 13 | The size is parametrized as per theme. So if you turn on post bar then size is small, otherwise large. 14 | Features like player controls are configurable at site level, within _config.yml. 15 | 16 | {% include embed-youtube.html video="eRsGyueVLvQ" %} 17 | 18 | To embed a YouTube video you just need to copy the unique video id at the end of the video url. 19 | 20 | Just add the following embed code. 21 | 22 | {% highlight liquid %} 23 | {% raw %} 24 | {% include embed-youtube.html video="eRsGyueVLvQ" %} 25 | {% endraw %} 26 | {% endhighlight %} 27 | 28 | OpenTheme takes care of the rest for you including embed code, and width sizing based on theme configuration. 29 | -------------------------------------------------------------------------------- /_posts/blog/2014-11-25-how-to-design-a-blog-in-jekyll.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | title: "How To Design A Blog in Jekyll" 5 | tags: blog jekyll 6 | category: design 7 | --- 8 | 9 | This article discusses our design journey in creating a blog using Jekyll. 10 | 11 | ### OpenTheme Blog Features 12 | 13 | OpenTheme supports most features you will find in popular blog management systems like WordPress. 14 | 15 | - A typical blog has a collection of chronological posts. 16 | - A reusable include listing recent posts. 17 | - A pagination include to leaf through posts in chronological order. 18 | - A post has an image, thumbnail, summary, title, permalink, and content. 19 | - Each post has tags connecting topics for related posts. 20 | - Posts are classified under a category. 21 | - Viewing a post shows related posts based on lexical analysis of post content. 22 | - Posts are social sharing friendly with share buttons, open graph meta tags. 23 | - Posts are SEO ready with titles, meta tags, content length indicators, related posts, tags, categories, and canonical urls. 24 | 25 | ### Content Workflow 26 | 27 | One of our stated [design goals]({% post_url /blog/2014-11-29-design-goals-for-opentheme %}) for OpenTheme is the *One Minute Content Workflow*. 28 | OpenTheme enables this in several ways, with the help of Jekyll, GitHub and Semantic UI features. 29 | 30 | In the workflow listed below, for simple blogs your just need A, and B, and you are publishing live! C gets you started faster. 31 | 32 | D is required if you are designing a website for GitHub Pages. You can skip E and edit posts directly on GitHub for simple blogs. 33 | 34 | **(A) Markdown.** Firstly, you don't need to write your posts in HTML. Markdown offers HTML equivalent syntax that is much simpler and less repetitive to write formatted content. 35 | It is like creating an outline in a text editor. 36 | 37 | **(B) _posts/blog.** Any posts you author and save in this folder are published when the site is generated by GitHub/Jekyll. 38 | 39 | **(C) Starter Post.** Just duplicate the [starter post]({% post_url /blog/2014-12-1-starter-post %}) to get started with your own. 40 | 41 | **(D) Local Test.** Optionally, you can test your posts by running *jekyll build* and *jekyll serve* commands on your local setup. 42 | Read more about how to set this up here - [Open Cloud Workflow]({% post_url /blog/2014-11-26-open-cloud-based-workflow-for-designing-your-website %}). 43 | 44 | **(E) Publish to GitHub.** For simple blog workflow, you can publish and edit posts directly on GitHub. 45 | 46 | ### Search and Social Optimization 47 | 48 | You are creating a blog to share with a certain target audience in mind. 49 | While marketing for your blog requires several activities outside the scope of a humble theme, 50 | there are ways OpenTheme can help. 51 | 52 | **Variables to Meta.** Many variables like *title*, site *tagline*, and *description*, need only by defined in one place. 53 | These variables then auto-populate the HTML Meta keywords, description, post titles, HTML title, and Facebook Open Graph, as appropriate. 54 | 55 | **SEO Friendly URLs.** Human readable, unique urls for each post and page, minus the trailing *.html*. Organized by date for posts. Canonical url specified in head. 56 | 57 | **Social buttons.** OpenTheme adds support for Carrot Share Button. [Carrot on GitHub](https://github.com/carrot/share-button). 58 | 59 | **Open Graph.** Facebook sharing and other websites recognize OpenGraph meta tags. OpenTheme populates these tags automatically based on post Frontmatter. 60 | -------------------------------------------------------------------------------- /_posts/blog/2014-11-26-open-cloud-based-workflow-for-designing-your-website.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | title: "Open Cloud Based Workflow For Designing Your Website" 5 | image: /img/blog/open-workflow.png 6 | tags: github jekyll 7 | category: workflow 8 | --- 9 | 10 | Design your next website with the freedom of switching from any device, to any place, to any operating system. All you need is a web browser. 11 | 12 | I have Windows enviornment at work, Mac at my home office, and use Android phone and iPad when mobile. I author articles, ebooks, and create code. 13 | 14 | My requirement is to seamlessly move from one device to next, from one place to next, without losing any time getting to next authoring or coding activity. 15 | 16 | I have discovered a loosely coupled workflow tying four useful tools together, which lets me enjoy this any device/OS/place freedom. 17 | 18 | - **Cloud9.** This is where I do my coding and writing. Cloud9 offers a cloud based Integrated Development Environment. 19 | - **GitHub.** What ties it all together. Saving my work on GitHub means, even when I need to setup a new development or authoring environment, I always have my latest code or content handy. 20 | - **Jekyll.** Static website content management for GitHub. I use this to enable a simple, yet powerful content workflow. 21 | - **Trello.** Very useful when extending my activities to a community of collaborators or peers at work. Used for planning, collaborating, brain-storming, and communicating. 22 | 23 | ### Cloud9 As Your Dev, Authoring Box 24 | 25 | You can actually skip this step altogether. 26 | If you desire a simpler workflow and don't plan to test Jekyll builds before publishing to GitHub, 27 | you can simply fork/clone OpenTheme as your own GitHub project and edit, create posts directly within GitHub. 28 | 29 | If you plan to do your custom build of Semantic UI, or modify the OpenTheme to your requirements, 30 | then you may want to consider Cloud9 over setting up a dev box on your local machine. 31 | 32 | Cloud9 comes with three big advantages over a local dev box setup. 33 | 34 | **Pre-configured dev environment.** Basic Cloud9 box has several Jekyll dependencies already pre-installed. 35 | Including Ruby. All you need to do is check versions and update the required gems in case you want to be on the latest. 36 | 37 | **Cloud-to-cloud is faster.** Cloning, committing from-to GitHub is from Cloud9 servers to GitHub servers. 38 | Latency is minimal, even if you are running on a GPS connection. 39 | 40 | **Mobility.** Combination of the first two benefits means I can switch connection speeds, networks, machines, OS, 41 | screen sizes and yet start from the last line I wrote or coded within no time. 42 | 43 | -------------------------------------------------------------------------------- /_posts/blog/2014-11-27-configurable-opentheme-features.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | category: theme 5 | title: "Configurable OpenTheme Features" 6 | tags: layout configure 7 | --- 8 | 9 | OpenTheme is designed to be adequately configurable. 10 | 11 | This means designing for fewest configuration options, that allow for maximum design freedom, without commpromising on ease of use. 12 | 13 | ### List Limits 14 | 15 | **tags_limit** - How many tags to display in tags list. 16 | 17 | **categories_limit** - How many categories to display in categories list. 18 | 19 | **recent_posts_limit** - How many posts to display in recent posts list. 20 | 21 | ### Layout Configuration 22 | 23 | **pagebar** - Enable or disable the page bar and page bar menu. 24 | 25 | **postbar** - Enable of disable the post bar. 26 | 27 | ### Site settings 28 | 29 | **title** - Site title used in meta tags. 30 | 31 | **tagline** - Site tagline used in page/post titles. 32 | 33 | **email, twitter_username, github_username** - Used in footer, contact us, social links. 34 | 35 | **copyright** - Used in copyright messages. 36 | 37 | **keywords** - Default site keywords. 38 | 39 | **description** - Default site description used in meta tags. 40 | 41 | **url** - Your website url. 42 | 43 | **default_image** - Used where image is not present. 44 | 45 | **permalink: pretty** - Specifies SEO friendly permalinks. 46 | 47 | **lsi: true** - Specifies lexical indexing by Jekyll/GitHub to create better related posts. 48 | 49 | ### Features 50 | 51 | **reading_time**- Show estimated reading time for posts. true/false. 52 | 53 | **facebook** - Use facebook plugins. true/false. 54 | 55 | **comments** - Switch disqus / facebook / none for comments. facebook = true required for facebook comments. 56 | 57 | ### Embeds 58 | 59 | **disqus_name** - Your site name at Disqus. 60 | 61 | **youtube_controls** - Turn on=1/off=0 Youtube player features when embedding videos. 62 | 63 | **google_map_zoom** - 1=Global zoom 18=Street Level. 64 | 65 | **google_map_view** - hybrid / satellite / roadmap. 66 | 67 | **google_map_height** - Default map height. Width adjusts to container. 68 | 69 | ### API Keys 70 | 71 | **PLEASE DO NOT USE THESE KEYS. Get your own.** 72 | 73 | **google_api_key** - Required for Google Maps. 74 | 75 | **mapbox** - Required for using Open Street Maps with Mapbox. 76 | 77 | **facebook_app** - Required for Facebook plugins. Get your app at [Facebook developers site](https://developers.facebook.com/). 78 | 79 | **mailchimp_u** - MailChimp u=unique identification. 80 | 81 | **mailchimp_id** - MailChimp id. 82 | 83 | **google_analytics_ua** - Google Analytics ID. 84 | 85 | ### Build settings 86 | 87 | **markdown: kramdown** - Markdown library used. 88 | -------------------------------------------------------------------------------- /_posts/blog/2014-11-29-design-goals-for-opentheme.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | title: "Design Goals for OpenTheme" 5 | tags: design patterns 6 | category: strategy 7 | --- 8 | 9 | OpenTheme Design Goals are Rapid, Responsive, Reactive, Realtime, Reusable, and Relaxed. 10 | 11 | ### Responsive 12 | 13 | OpenTheme blog works well on multiple screen sizes. 14 | Scaling content and features to Mobile, Tablet, Desktop form factors, 15 | with zero to minimal effort on your part. 16 | 17 | Just try it now. Resize your browser window and see how this post scales down/up 18 | based on target browser or screen size. Even the features enable/disable based on 19 | what a particular screen size can accomodate. Like the menu for Templates shows 20 | icon and text on a larger screen, only icon on smaller ones. 21 | 22 | ### Rapid 23 | 24 | We have a goal to achieve the *One Minute Content Workflow* from creating a post to going live. 25 | 26 | This one minute should take care of asset pipeline incluing HTML, JS, CSS, image pre-processing, 27 | testing your web app where tests are included, optimizing your assets where required, 28 | including features that you designed for, saving a version of GitHub, publishing to live. 29 | 30 | We also want you to have the capability to author your website directly using GitHub web based editors. 31 | This means OpenTheme only uses markup, tags, conventions that are 100% GitHub whitelisted. 32 | That way you skip any pre-processing, Jekyll, or dev box requirements. **GitHub is your Content Management System!** 33 | 34 | ### Reusable 35 | 36 | Every feature on OpenTheme is designed with reusability in mind. 37 | OpenTheme's growing list of _includes are - tag lists, category lists, recent posts, top menu, 38 | post side bar, page bar, post paginator, header, footer, and featured post. 39 | 40 | ### Reactive 41 | 42 | Reactive website or web apps behave like native desktop or mobile apps. 43 | When an email arrives, your desktop or mobile just alerts you without any action from your end. 44 | Reactivity in web apps takes this concept to the next level. As it applies to even 45 | upgrading the web app. Add a new feature, publish, and it becomes available to all 46 | users currently connected to your app. 47 | 48 | We are currently exploring reactive frameworks including AngularJS, to identify the 49 | best-fit for OpenTheme + GitHub stack. Stay tuned for more. 50 | 51 | ### Realtime 52 | 53 | When we have reactive web apps, we can start using them for realtime updates, like 54 | social streams, stock prices, weather updates, and such. Realtime content management, 55 | is an Opentheme feature in the idea stage. Follow developments and design discussions on 56 | the [OpenTheme Trello Board](https://trello.com/b/Jm8UFV7p). 57 | 58 | ### Relaxed - convention over configuration over coding 59 | 60 | We favor conventions that are intuitive, yet relaxed for flexibility. 61 | Like, all partials go into _includes folder, all templates in _layouts folder. 62 | Conventions are favored over configuration where these are popular, and well 63 | known patterns. 64 | 65 | Relaxed because, you can decide to follow conventions, 66 | intuitively default to known patterns (example - global configuration), 67 | or create your own (example - your own data structures in _data folder). 68 | 69 | Configuration in _config.yml and frontmatter is used where 70 | it adds to ease of content creation and design. 71 | 72 | Coding follows best practices from top GitHub libraries like Semantic UI 73 | and projects like Jekyll that OpenTheme has as dependencies. 74 | -------------------------------------------------------------------------------- /_posts/blog/2014-11-29-starter-post-twitter-embed.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | category: theme 5 | title: Starter Post - Twitter Embed 6 | tags: social embeds 7 | image: /img/embed/twitter-bird.jpg 8 | --- 9 | 10 | You can add social media content as embeds. 11 | 12 | Here is an example of a Tweet announcing OpenTheme. 13 | 14 |

Create Awesome Websites on GitHub for Free! http://t.co/tXj8H17vZE pic.twitter.com/2VCbLf0KrL

— Manav Sehgal (@manavsehgal) December 1, 2014
15 | 16 | 17 | Tweet embed can be copied straight from Twitter embed link within a Tweet. 18 | -------------------------------------------------------------------------------- /_posts/blog/2014-12-05-starter-post-google-map-embed.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | category: theme 5 | title: Starter Post - Google Maps Embed 6 | tags: maps embeds 7 | image: /img/embed/map.png 8 | --- 9 | 10 | You can embed Google maps using custom embed created for OpenTheme. 11 | 12 | Just provide the location in url escaped format. Specify custom height for the map viewer, otherwise site default is taken. 13 | 14 | {% include embed-google-map.html location="The+Shard+London" %} 15 | 16 | Map width adjusts responsively to container. 17 | 18 | {% highlight liquid %} 19 | {% raw %} 20 | {% include embed-google-map.html location="The+Shard+London" height=768 %} 21 | {% endraw %} 22 | {% endhighlight %} 23 | 24 | Use this code to embed Google Map with specific height in pixels. 25 | Remove the height attribute and site default is taken instead. 26 | 27 | -------------------------------------------------------------------------------- /_posts/blog/2014-12-1-starter-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | category: theme 5 | title: "Starter Post" # Title used in HTML Meta, Post Header, Recent Posts list 6 | tags: blog jekyll # Tags to relate multiple topics to a post 7 | --- 8 | 9 | This is a starter post which you can duplicate to create your own. It demonstrates Markdown syntax, Liquid tags, and GitHub whitelisted HTML. 10 | 11 | **Note.** Read this post as Markdown source to see the easy to 12 | write [syntax](https://raw.githubusercontent.com/open-start/opentheme/master/_posts/blog/2014-12-1-starter-post.md) 13 | for creating this HTML page. 14 | 15 | ### Markdown 16 | 17 | #### This is a level four heading. Use hash symbol and repeat for levels. 18 | 19 | Dividers can separate sections with three dashes or minus symbols. Not to be confused with the three dashes fencing the YAML frontmatter on top of the post. 20 | 21 | Code blocks can be fenced with three back-apostrophe characters like so. 22 | 23 | {% highlight javascript linenos %} 24 | {% raw %} 25 | var some_variable = "Hello"; 26 | if (some_variable == "Hello") { 27 | // Do something... 28 | } 29 | {% endraw %} 30 | {% endhighlight %} 31 | 32 | 33 | Text formatting can include **bold text**, and *emphasized text*. 34 | 35 | > Block quotes start with a greater than symbol. 36 | 37 | Normal text can be written like in any editor. 38 | 39 | New line or ENTER twice to start on next line. 40 | 41 | 42 | ### Liquid Tags and Jekyll Variables 43 | 44 | You can use Liquid Tags to reference other posts. Here is one on [design goals for OpenTheme]({% post_url /blog/2014-11-29-design-goals-for-opentheme %}). 45 | 46 | Site variables can be used as well. Here is the tagline for OpenTheme as descibed in a site variable - **{{ site.tagline }}**. 47 | Page variables are also available. Title for this post is **{{ page.title }}** and it uses **{{ page.layout }}** template. 48 | 49 | ### References 50 | 51 | - [Markdown cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) is a good place to start for Markdown syntax. 52 | - [GitHub Whitelisted HTML](https://github.com/github/markup#html-sanitization) lists valid HTML tags that GitHub allows in your posts. 53 | - [Jekyll Variables](http://jekyllrb.com/docs/variables/) 54 | - [Template Use Cases for Jekyll Variables](http://jekyllrb.com/docs/templates/) 55 | - [Liquid Tags](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers) 56 | -------------------------------------------------------------------------------- /_posts/blog/2014-12-15-content-strategy-for-startup-websites.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | category: theme 5 | title: Content Strategy For Startup Websites 6 | tags: feature content 7 | image: /img/opentheme-workflow.png 8 | --- 9 | 10 | How important is your website's content strategy for your startup or small team? 11 | 12 | OpenTheme content strategy can be a good starting point for your website. It promotes a product - a modern theme. 13 | The website addresses an active and vibrant target audience - GitHub community. 14 | OpenTheme showcases user experience best practices - [Semantic UI](http://semantic-ui.com/). 15 | Websites built with OpenTheme use latest content workflow tool-chain including Jekyll and GitHub. 16 | 17 | OpenTheme Content Strategy can be summarized as the 6-S guiding principles and the [6-R design goals]({% post_url /blog/2014-11-29-design-goals-for-opentheme %}). 18 | 19 | ### The 6-S Guiding Principles 20 | 21 | **Snackable.** Provide easy, quick views for your content. 22 | 23 | **Shareworthy.** Design content that audience wants to reuse, share. 24 | 25 | **Semantic.** Add structure and meaning to content. Allow humans and software to understand your content in the same way. 26 | 27 | **Speedy.** Content publishing and presentation speedy and high performance. 28 | 29 | **Simple.** Keep things simple. Authoring content should be intuitive, easy, and efficient. 30 | 31 | **Scalable.** Scaling cost-effectively for bandwidth, compute, storage, and concurrency. 32 | 33 | ### Blog Posts Used For Theme Tutorials 34 | 35 | Long form theme tutorials or articles like this one are created using Markdown and rendered as blog posts. 36 | You can add following features by adding *name: value* pairs in the front of post content. 37 | 38 | **layout** Change the layout of the post using one from *_layouts* folder. 39 | 40 | **image** Add a post image. Recommend 640x300 size image which works well resized to thumbnail and when social sharing. 41 | 42 | **tags** Add tags for posts related to a certain topic. 43 | 44 | **category** Further classify post. This is also picked up as a folder hierarchy for creating SEO friendly urls. 45 | 46 | **author** Post author name. 47 | 48 | **title** Post title is picked up from here. Added to HTML meta and post masthead. 49 | 50 | #### Conventions For Blog Posts 51 | 52 | **date** Publish date for the post is now picked from file name following YYYY-MM-DD-Title-Of-Blog-Post convention. Also decides the folder hierarchy for pretty permalinks. 53 | 54 | **_config defaults** You can set/change defaults for category, layout, author based on type and folder of post/pages. 55 | 56 | ### Collaborative Data Driven Documents 57 | 58 | Modern websites rely heavily on presenting structured data. 59 | As content authors, managing database servers, concurrency, performance, are concerns best handled by the platform. 60 | We want the flexibility to easily define, manipulate, and present our data structure. 61 | 62 | One of the ways to achieve this on static websites is by using structured data documents served from GitHub. 63 | 64 | OpenTheme demonstrates this feature to showcase custom plugins or reusable embeds. 65 | 66 | You can see [Semantic UI Card view for these embeds here](/embeds/). 67 | The data behind these embed is editable directly as a [GitHub YAML Frontmatter document here](https://github.com/open-start/opentheme/blob/master/_data/embeds.yml). 68 | 69 | {% include embed-cards.html cards=1 %} 70 | 71 | This is the code used in post to add the above card. 72 | 73 | {% highlight liquid %} 74 | {% raw %} 75 | {% include embed-cards.html cards=1 %} 76 | {% endraw %} 77 | {% endhighlight %} 78 | 79 | Adding a new card view with data from more than 10 structured key-value pairs is as easy as editing an outline-like text document. 80 | 81 | GitHub Pages (Jekyll pre-processor) along with Semantic UI, take care of the front-end rendering auto-magically! -------------------------------------------------------------------------------- /_posts/blog/2014-12-2-data-driven-web-apps-using-github.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Manav Sehgal 4 | category: theme 5 | title: "Data Driven Web Apps Using GitHub" 6 | tags: data analytics 7 | --- 8 | 9 | GitHub Pages can use JSON, YAML, CSV, Cloud stores like Fusion Tables, and Real-time databases like Firebase. 10 | 11 | - Using YAML to create simple, collaborative data driven documents. 12 | - Using CSV in GitHub Pages 13 | - Using JSON 14 | - Integrating Firebase 15 | - Integrating Fusion Tables 16 | 17 | ### YAML Data For Embed Plugins 18 | 19 | Simple, structured documents can be expressed in YAML or JSON. 20 | Creating such documents within _data folder enables access to YAML defined structure 21 | as an object within Liquid markup. 22 | 23 | OpenTheme uses one simple YAML data file to describe Embed plugins with 12 distinct structured attributes. 24 | 25 | {% highlight yaml %} 26 | {% raw %} 27 | # Official name of embed 28 | - name: Embedded Tweets 29 | # Description of embed 30 | about: An Embedded Tweet... 31 | # Social, News, Doc, RSS, Video, Photo... 32 | group: Social 33 | # Image used in card view 34 | image: /img/embed/twitter-bird.jpg 35 | # Icon used in table view. 36 | icon: twitter 37 | # Site, Layout, Post configurable. 38 | scope: None 39 | # true/false = Is the embed UI responsive 40 | responsive: true 41 | # Does the embed work well on Github Pages 42 | jekyll_friendly: true 43 | # Rating based on popularity, features 44 | rating: 3 45 | # Link to to create embed 46 | create: https://twitter.com/ 47 | # Link to embed docs 48 | docs: https://dev.twitter.com/web/ 49 | # URL to usecase 50 | usecase: /theme/2014/11/29/starter-post/ 51 | {% endraw %} 52 | {% endhighlight %} 53 | 54 | 55 | Semantic UI Cards are used to represent a compact, snackable view of each embed. 56 | 57 | {% include embed-cards.html cards=1 %} 58 | 59 | Here is an example of a card displayed using following embed code. 60 | 61 | {% highlight liquid %} 62 | {% raw %} 63 | # Include cards based on site.recent_items default 64 | {% include embed-cards.html %} 65 | 66 | # Include cards specifying count of cards 67 | {% include embed-cards.html cards=1 %} 68 | {% endraw %} 69 | {% endhighlight %} 70 | 71 | 72 | Best part of describing content in YAML? It can be edited using GitHub directly. 73 | Eases pull requests for content, when you are collaborating with the community. 74 | 75 | You can view [OpenTheme embed YAML file on GitHub](https://github.com/open-start/opentheme/blob/master/_data/embeds.yml). 76 | 77 | This structure can be further "relaxed" by handling default behaviour in the respective views. 78 | This way only minimal number values are specified for each document (record). 79 | 80 | -------------------------------------------------------------------------------- /_sass/_footer.scss: -------------------------------------------------------------------------------- 1 | /*-------------- 2 | Footer 3 | ---------------*/ 4 | 5 | .global .footer.segment { 6 | background-color: #000000; 7 | padding: 3rem 0; 8 | } 9 | 10 | .global .copyright.segment { 11 | margin: 0; 12 | } 13 | -------------------------------------------------------------------------------- /_sass/_header.scss: -------------------------------------------------------------------------------- 1 | /*-------------- 2 | Header 3 | ---------------*/ 4 | .global .masthead { 5 | margin: 0; 6 | padding: 1rem 0; 7 | } 8 | .global .masthead .column { 9 | position: relative; 10 | } 11 | 12 | .global .masthead .information { 13 | margin: 1em; 14 | } 15 | 16 | .global .slim-header-light { 17 | color: #fff; 18 | font-family: 'Open Sans', sans-serif; 19 | font-weight: 300; 20 | padding: 0; 21 | margin: 0; 22 | } 23 | 24 | /* Source: http://markdotto.com/playground/3d-text/ */ 25 | .global .header-3d-center { 26 | text-align: center; 27 | } 28 | 29 | /* Source: http://markdotto.com/playground/3d-text/ */ 30 | .global .header-3d { 31 | color: #fff; 32 | text-shadow: 0 1px 0 #ccc, 33 | 0 2px 0 #c9c9c9, 34 | 0 3px 0 #bbb, 35 | 0 4px 0 #b9b9b9, 36 | 0 5px 0 #aaa, 37 | 0 6px 1px rgba(0,0,0,.1), 38 | 0 0 5px rgba(0,0,0,.1), 39 | 0 1px 3px rgba(0,0,0,.3), 40 | 0 3px 5px rgba(0,0,0,.2), 41 | 0 5px 10px rgba(0,0,0,.25), 42 | 0 10px 10px rgba(0,0,0,.2), 43 | 0 20px 20px rgba(0,0,0,.15); 44 | } -------------------------------------------------------------------------------- /_sass/_menu.scss: -------------------------------------------------------------------------------- 1 | /*-------------- 2 | Menu 3 | ---------------*/ 4 | 5 | .global .menu .right.menu > .mobile.item { 6 | display: none; 7 | } 8 | -------------------------------------------------------------------------------- /_sass/_newsletter.scss: -------------------------------------------------------------------------------- 1 | /*-------------- 2 | Newsletter 3 | ---------------*/ 4 | 5 | .global .newsletter.button { 6 | margin-top: 10px; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /_sass/_pygments-syntax.scss: -------------------------------------------------------------------------------- 1 | // Pygments Synax Highlighting 2 | 3 | .highlight { background: #ffffff; } 4 | .highlight .c { color: #999988; font-style: italic } /* Comment */ 5 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 6 | .highlight .k { font-weight: bold } /* Keyword */ 7 | .highlight .o { font-weight: bold } /* Operator */ 8 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 9 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ 10 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ 11 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 12 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 13 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ 14 | .highlight .ge { font-style: italic } /* Generic.Emph */ 15 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 16 | .highlight .gh { color: #999999 } /* Generic.Heading */ 17 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 18 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ 19 | .highlight .go { color: #888888 } /* Generic.Output */ 20 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 21 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 22 | .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ 23 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 24 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 25 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 26 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ 27 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 28 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 29 | .highlight .m { color: #009999 } /* Literal.Number */ 30 | .highlight .s { color: #d14 } /* Literal.String */ 31 | .highlight .na { color: #008080 } /* Name.Attribute */ 32 | .highlight .nb { color: #0086B3 } /* Name.Builtin */ 33 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ 34 | .highlight .no { color: #008080 } /* Name.Constant */ 35 | .highlight .ni { color: #800080 } /* Name.Entity */ 36 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ 37 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ 38 | .highlight .nn { color: #555555 } /* Name.Namespace */ 39 | .highlight .nt { color: #000080 } /* Name.Tag */ 40 | .highlight .nv { color: #008080 } /* Name.Variable */ 41 | .highlight .ow { font-weight: bold } /* Operator.Word */ 42 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 43 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 44 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 45 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 46 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 47 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */ 48 | .highlight .sc { color: #d14 } /* Literal.String.Char */ 49 | .highlight .sd { color: #d14 } /* Literal.String.Doc */ 50 | .highlight .s2 { color: #d14 } /* Literal.String.Double */ 51 | .highlight .se { color: #d14 } /* Literal.String.Escape */ 52 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */ 53 | .highlight .si { color: #d14 } /* Literal.String.Interpol */ 54 | .highlight .sx { color: #d14 } /* Literal.String.Other */ 55 | .highlight .sr { color: #009926 } /* Literal.String.Regex */ 56 | .highlight .s1 { color: #d14 } /* Literal.String.Single */ 57 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */ 58 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ 59 | .highlight .vc { color: #008080 } /* Name.Variable.Class */ 60 | .highlight .vg { color: #008080 } /* Name.Variable.Global */ 61 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */ 62 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /_sass/_queries.scss: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Responsive 3 | *******************************/ 4 | 5 | /* Mobile Only */ 6 | @media only screen and (max-width : 768px) { 7 | 8 | .global .menu .right.menu > .item { 9 | display: none; 10 | } 11 | 12 | .global .menu .right.menu > .mobile.item { 13 | display: block; 14 | } 15 | 16 | .global .menu .right.menu > .mobile.item .menu { 17 | left: auto; 18 | right: 0; 19 | } 20 | 21 | .global .selection.list .right.floated { 22 | display: none; 23 | } 24 | 25 | .global h1 { 26 | font-size: 2em; 27 | } 28 | 29 | .global h2 { 30 | font-size: 1.5em; 31 | } 32 | 33 | .global .overview .divided.grid .header .icon { 34 | font-size: 1.5em; 35 | } 36 | 37 | .global .overview .divided.grid .header + p { 38 | min-height: 0; 39 | } 40 | 41 | .global .masthead.segment .button { 42 | font-size: 1rem; 43 | } 44 | 45 | .global .masthead.segment .column { 46 | font-size: 0.7rem; 47 | } 48 | 49 | .global .masthead.segment .column p { 50 | display: none; 51 | } 52 | 53 | } -------------------------------------------------------------------------------- /_sass/_resets.scss: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Global Resets 3 | *******************************/ 4 | html { 5 | font-size: 18px; 6 | } 7 | 8 | body { 9 | font-family: 'Open Sans', sans-serif; 10 | font-weight: 400; 11 | } 12 | 13 | h1, h2, h3, h4, h5 { 14 | font-family: 'Open Sans', sans-serif; 15 | font-weight: 700; 16 | } 17 | 18 | .ui.header { 19 | font-family: 'Open Sans', sans-serif; 20 | font-weight: 700; 21 | } -------------------------------------------------------------------------------- /_sass/_ribbons.scss: -------------------------------------------------------------------------------- 1 | /*-------------- 2 | Ribbons 3 | ---------------*/ 4 | 5 | .global .segment h1 { 6 | font-size: 2em; 7 | margin-bottom: 1em; 8 | } 9 | 10 | .global .vertical.segment { 11 | padding: 3rem 0; 12 | } 13 | 14 | .global .feature.segment { 15 | margin: 0; 16 | padding: 3rem 0; 17 | } 18 | .global .feature.segment p { 19 | min-height: 50px; 20 | } 21 | 22 | .global .selection.list { 23 | margin: 0 -0.5em; 24 | } 25 | -------------------------------------------------------------------------------- /_sass/_subtle-patterns.scss: -------------------------------------------------------------------------------- 1 | /*-------------- 2 | Subtle Patterns 3 | ---------------*/ 4 | .global .blue-round-gradient { 5 | background-color: #7e8bbc; 6 | /* IE9, iOS 3.2+ */ 7 | background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0idnNnZyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiPjxzdG9wIHN0b3AtY29sb3I9IiNmOGI2ZmYiIHN0b3Atb3BhY2l0eT0iMSIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzAzNjA3OCIgc3RvcC1vcGFjaXR5PSIxIiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjdnNnZykiIC8+PC9zdmc+); 8 | background-image: -webkit-gradient(linear, 0% 0%, 100% 100%,color-stop(0, rgb(248, 182, 255)),color-stop(1, rgb(3, 96, 120))); 9 | /* Android 2.3 */ 10 | background-image: -webkit-repeating-linear-gradient(top left,rgb(248, 182, 255) 0%,rgb(3, 96, 120) 100%); 11 | /* IE10+ */ 12 | background-image: repeating-linear-gradient(to bottom right,rgb(248, 182, 255) 0%,rgb(3, 96, 120) 100%); 13 | background-image: -ms-repeating-linear-gradient(top left,rgb(248, 182, 255) 0%,rgb(3, 96, 120) 100%); 14 | } 15 | 16 | /* IE8- CSS hack */ 17 | @media \0screen\,screen\9 { 18 | .global .blue-round-gradient { 19 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#fff8b6ff",endColorstr="#ff036078",GradientType=0); 20 | } 21 | } 22 | 23 | .global .black-shine-gradient { 24 | background-color: #2b323f; 25 | /* IE9, iOS 3.2+ */ 26 | background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0idnNnZyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjNDg1NTZjIiBzdG9wLW9wYWNpdHk9IjEiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMxYjIxMmIiIHN0b3Atb3BhY2l0eT0iMSIgb2Zmc2V0PSIwLjUiLz48c3RvcCBzdG9wLWNvbG9yPSIjMTQxOTIyIiBzdG9wLW9wYWNpdHk9IjEiIG9mZnNldD0iMC41MSIvPjxzdG9wIHN0b3AtY29sb3I9IiMzNTNiNDUiIHN0b3Atb3BhY2l0eT0iMSIgb2Zmc2V0PSIxIi8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI3ZzZ2cpIiAvPjwvc3ZnPg==); 27 | background-image: -webkit-gradient(linear, 0% 0%, 0% 100%,color-stop(0, rgb(72, 85, 108)),color-stop(0.5, rgb(27, 33, 43)),color-stop(0.51, rgb(20, 25, 34)),color-stop(1, rgb(53, 59, 69))); 28 | /* Android 2.3 */ 29 | background-image: -webkit-repeating-linear-gradient(top,rgb(72, 85, 108) 0%,rgb(27, 33, 43) 50%,rgb(20, 25, 34) 51%,rgb(53, 59, 69) 100%); 30 | /* IE10+ */ 31 | background-image: repeating-linear-gradient(to bottom,rgb(72, 85, 108) 0%,rgb(27, 33, 43) 50%,rgb(20, 25, 34) 51%,rgb(53, 59, 69) 100%); 32 | background-image: -ms-repeating-linear-gradient(top,rgb(72, 85, 108) 0%,rgb(27, 33, 43) 50%,rgb(20, 25, 34) 51%,rgb(53, 59, 69) 100%); 33 | } 34 | 35 | /* IE8- CSS hack */ 36 | @media \0screen\,screen\9 { 37 | .global .black-shine-gradient { 38 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff48556c",endColorstr="#ff353b45",GradientType=0); 39 | } 40 | } 41 | 42 | 43 | .global .tiny-grid { 44 | background-image: url(img/tiny_grid.png); 45 | } 46 | 47 | .global .graphy { 48 | background-image: url(img/graphy.png); 49 | } 50 | 51 | .global .dark-wood { 52 | background-image: url(img/dark_wood.png); 53 | } 54 | 55 | .global .retina-wood { 56 | background-image: url(img/retina_wood.png); 57 | } 58 | 59 | .global .escheresque { 60 | background-image: url(img/escheresque_ste.png); 61 | } 62 | 63 | .global .grey-wash-wall { 64 | background-image: url(img/grey_wash_wall.png); 65 | } 66 | 67 | .global .skulls { 68 | background-image: url(img/skulls.png); 69 | } 70 | 71 | .global .symphony { 72 | background-image: url(img/symphony.png); 73 | } -------------------------------------------------------------------------------- /_sass/_tags.scss: -------------------------------------------------------------------------------- 1 | /*-------------- 2 | Tags 3 | ---------------*/ 4 | 5 | .global .tag { 6 | margin-right: 5px; 7 | margin-bottom: 5px; 8 | } 9 | 10 | .global .label.categories { 11 | margin-right: 5px; 12 | margin-bottom: 5px; 13 | } 14 | 15 | .global .recent-posts-title { 16 | margin-top: 5px; 17 | margin-bottom: 5px; 18 | } 19 | 20 | .global .thumb-img { 21 | margin-top: 15px; 22 | margin-bottom: 15px; 23 | } 24 | -------------------------------------------------------------------------------- /_sass/main.scss: -------------------------------------------------------------------------------- 1 | @import 2 | "resets", 3 | "subtle-patterns", 4 | "header", 5 | "menu", 6 | "ribbons", 7 | "tags", 8 | "footer", 9 | "newsletter", 10 | "pygments-syntax", 11 | "queries"; 12 | 13 | -------------------------------------------------------------------------------- /apps.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: slider 3 | title: Apps 4 | description: Single Page Apps Created In OpenTheme. 5 | --- 6 | 7 |
8 |
9 |
10 |
11 | {% include recent-apps.html %} 12 |
13 |
14 |

Single Page Apps enable native-like reactivity and responsiveness within web pages.

15 |

OpenTheme enables you to create Single Page Apps using document-oriented data, real-time data stores, 16 | and large Data sources.

17 |

All this, while ensuring simplicity and scalability of GitHub Pages.

18 |

And, of course OpenTheme adds a good measure of Semantic UI, so your apps come with a modern user experience.

19 |
20 |
21 |
22 |
23 | -------------------------------------------------------------------------------- /blog.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: landing 3 | title: Blog 4 | description: Latest posts, tags, categories related to OpenTheme. 5 | --- 6 | 7 |
8 |
9 |
10 |
11 | {% include recent-posts.html %} 12 |
13 | 14 |
15 | 16 | {% include feature-post.html %} 17 | 18 |
19 | 20 |

Tags

21 | {% include site-tags.html %} 22 | 23 |
24 | 25 |

Categories

26 | {% include site-categories.html %} 27 | 28 |
29 |
30 |
31 |
32 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "opentheme", 3 | "description": "Powerful Theme for Websites and Single Page Apps on GitHub Pages", 4 | "version": "0.0.0", 5 | "homepage": "https://github.com/open-start/opentheme", 6 | "license": "MIT", 7 | "private": true, 8 | "dependencies": {} 9 | } 10 | -------------------------------------------------------------------------------- /category.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: landing 3 | title: Categories 4 | description: Recent posts listed by category. 5 | --- 6 | 7 |
8 |
9 |
10 |
11 | {% include site-categories.html %} 12 |
13 |
14 |
15 |
16 | 17 | {% for category in site.categories %} 18 | {% capture inverted %}{{ forloop.index | modulo:2 }}{% endcapture %} 19 |
20 |
21 |
22 |
23 | 24 |

25 | {{ category.first | capitalize }} 26 |

27 |
28 |
29 | 30 | 49 |
50 |
51 | {% endfor %} 52 | -------------------------------------------------------------------------------- /coffee/metrics.js: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | $('.percent').progress(); 4 | 5 | // ====== PageSpeed API - Desktop ===== 6 | 7 | // Specify your actual API key here: 8 | var API_KEY = '{{ site.google_api_key}}'; 9 | 10 | // Specify the URL you want PageSpeed results for here: 11 | var URL_TO_GET_RESULTS_FOR = 'http://opentheme.co/'; 12 | 13 | var API_URL = 'https://www.googleapis.com/pagespeedonline/v1/runPagespeed?'; 14 | 15 | // Object that will hold the callbacks that process results from the 16 | // PageSpeed Insights API. 17 | var callbacks = {} 18 | 19 | // Invokes the PageSpeed Insights API. The response will contain 20 | // JavaScript that invokes our callback with the PageSpeed results. 21 | function runPagespeed() { 22 | var s = document.createElement('script'); 23 | s.type = 'text/javascript'; 24 | s.async = true; 25 | var query = [ 26 | 'url=' + URL_TO_GET_RESULTS_FOR, 27 | 'callback=runPagespeedCallbacks', 28 | 'key=' + API_KEY, 29 | ].join('&'); 30 | s.src = API_URL + query; 31 | document.head.insertBefore(s, null); 32 | } 33 | 34 | // Our JSONP callback. Checks for errors, then invokes our callback handlers. 35 | function runPagespeedCallbacks(result) { 36 | if (result.error) { 37 | var errors = result.error.errors; 38 | for (var i = 0, len = errors.length; i < len; ++i) { 39 | if (errors[i].reason == 'badRequest' && API_KEY == '{{ site.google_api_key}}') { 40 | alert('Please specify your Google API key in the API_KEY variable.'); 41 | } else { 42 | // NOTE: your real production app should use a better 43 | // mechanism than alert() to communicate the error to the user. 44 | alert(errors[i].message); 45 | } 46 | } 47 | return; 48 | } 49 | 50 | // Dispatch to each function on the callbacks object. 51 | for (var fn in callbacks) { 52 | var f = callbacks[fn]; 53 | if (typeof f == 'function') { 54 | callbacks[fn](result); 55 | } 56 | } 57 | } 58 | 59 | // Invoke the callback that fetches results. Async here so we're sure 60 | // to discover any callbacks registered below, but this can be 61 | // synchronous in your code. 62 | setTimeout(runPagespeed, 0); 63 | 64 | callbacks.displayPageSpeedScore = function(result) { 65 | $( ".desktop-pagespeed" ).attr( "data-percent", result.score.toString() ); 66 | $( ".desktop-pagespeed-value" ).text( "*" + result.score.toString() ); 67 | $('.desktop-pagespeed').progress(); 68 | 69 | var results = []; 70 | var ruleResults = result.formattedResults.ruleResults; 71 | for (var i in ruleResults) { 72 | var ruleResult = ruleResults[i]; 73 | // Don't display lower-impact suggestions. 74 | if (ruleResult.ruleImpact < 3.0) continue; 75 | results.push({name: ruleResult.localizedRuleName, 76 | impact: ruleResult.ruleImpact}); 77 | } 78 | results.sort(sortByImpact); 79 | var r = ""; 80 | for (var i = 0, len = results.length; i < len; ++i) { 81 | r = r + "
  • " + results[i].name + "
  • "; 82 | } 83 | var ul = ""; 84 | 85 | if (ul.length > 9) { 86 | $(".desktop-suggestions").html("

    Suggestions to Improve

    " + ul); 87 | } else { 88 | $(".desktop-suggestions").text('

    No high impact suggestions. Good job!

    '); 89 | } 90 | 91 | }; 92 | 93 | // ====== PageSpeed API - Mobile ===== 94 | 95 | // Object that will hold the callbacks that process results from the 96 | // PageSpeed Insights API. 97 | var callbacks_m = {} 98 | 99 | // Invokes the PageSpeed Insights API. The response will contain 100 | // JavaScript that invokes our callback with the PageSpeed results. 101 | function runPagespeed_m() { 102 | var s = document.createElement('script'); 103 | s.type = 'text/javascript'; 104 | s.async = true; 105 | var query = [ 106 | 'url=' + URL_TO_GET_RESULTS_FOR, 107 | 'strategy=mobile', 108 | 'callback=runPagespeedCallbacks_m', 109 | 'key=' + API_KEY, 110 | ].join('&'); 111 | s.src = API_URL + query; 112 | document.head.insertBefore(s, null); 113 | } 114 | 115 | // Our JSONP callback. Checks for errors, then invokes our callback handlers. 116 | function runPagespeedCallbacks_m(result) { 117 | if (result.error) { 118 | var errors = result.error.errors; 119 | for (var i = 0, len = errors.length; i < len; ++i) { 120 | if (errors[i].reason == 'badRequest' && API_KEY == '{{ site.google_api_key}}') { 121 | alert('Please specify your Google API key in the API_KEY variable.'); 122 | } else { 123 | // NOTE: your real production app should use a better 124 | // mechanism than alert() to communicate the error to the user. 125 | alert(errors[i].message); 126 | } 127 | } 128 | return; 129 | } 130 | 131 | // Dispatch to each function on the callbacks object. 132 | for (var fn in callbacks_m) { 133 | var f = callbacks_m[fn]; 134 | if (typeof f == 'function') { 135 | callbacks_m[fn](result); 136 | } 137 | } 138 | } 139 | 140 | // Invoke the callback that fetches results. Async here so we're sure 141 | // to discover any callbacks registered below, but this can be 142 | // synchronous in your code. 143 | setTimeout(runPagespeed_m, 0); 144 | 145 | callbacks_m.displayPageSpeedScore = function(result) { 146 | $( ".mobile-pagespeed" ).attr( "data-percent", result.score.toString() ); 147 | $( ".mobile-pagespeed-value" ).text( "*" + result.score.toString() ); 148 | $('.mobile-pagespeed').progress(); 149 | 150 | var results = []; 151 | var ruleResults = result.formattedResults.ruleResults; 152 | for (var i in ruleResults) { 153 | var ruleResult = ruleResults[i]; 154 | // Don't display lower-impact suggestions. 155 | if (ruleResult.ruleImpact < 3.0) continue; 156 | results.push({name: ruleResult.localizedRuleName, 157 | impact: ruleResult.ruleImpact}); 158 | } 159 | results.sort(sortByImpact); 160 | var r = ""; 161 | for (var i = 0, len = results.length; i < len; ++i) { 162 | r = r + "
  • " + results[i].name + "
  • "; 163 | } 164 | var ul = ""; 165 | 166 | if (ul.length > 9) { 167 | $(".mobile-suggestions").html("

    Suggestions to Improve

    " + ul); 168 | } else { 169 | $(".mobile-suggestions").text('

    No high impact suggestions. Good job!

    '); 170 | } 171 | 172 | 173 | }; 174 | 175 | // Helper function that sorts results in order of impact. 176 | function sortByImpact(a, b) { return b.impact - a.impact; } 177 | 178 | // ====== ListJS ====== 179 | 180 | var options = { 181 | valueNames: [ 'category', 'title' ] 182 | }; 183 | 184 | var metricsList = new List('metrics-list', options); 185 | 186 | $('.filter-all').click(function() { 187 | metricsList.filter(); 188 | $('.sort').removeClass( "disabled" ); 189 | $('.filter-all').addClass( "active" ); 190 | $('.filter-reusability').removeClass( "active" ); 191 | $('.filter-usability').removeClass( "active" ); 192 | $('.filter-learnability').removeClass( "active" ); 193 | $('.filter-performance').removeClass( "active" ); 194 | $('.filter-reliability').removeClass( "active" ); 195 | return false; 196 | }); 197 | 198 | $('.filter-reusability').click(function() { 199 | metricsList.filter(function(item) { 200 | 201 | if (item.values().category === "Reusability") { 202 | $('.sort').addClass( "disabled" ); 203 | $('.filter-all').removeClass( "active" ); 204 | $('.filter-reusability').addClass( "active" ); 205 | $('.filter-usability').removeClass( "active" ); 206 | $('.filter-learnability').removeClass( "active" ); 207 | $('.filter-performance').removeClass( "active" ); 208 | $('.filter-reliability').removeClass( "active" ); 209 | return true; 210 | } else { 211 | return false; 212 | } 213 | }); 214 | return false; 215 | }); 216 | 217 | 218 | $('.filter-usability').click(function() { 219 | metricsList.filter(function(item) { 220 | 221 | if (item.values().category === "Usability") { 222 | $('.sort').addClass( "disabled" ); 223 | $('.filter-all').removeClass( "active" ); 224 | $('.filter-reusability').removeClass( "active" ); 225 | $('.filter-usability').addClass( "active" ); 226 | $('.filter-learnability').removeClass( "active" ); 227 | $('.filter-performance').removeClass( "active" ); 228 | $('.filter-reliability').removeClass( "active" ); 229 | return true; 230 | } else { 231 | return false; 232 | } 233 | }); 234 | return false; 235 | }); 236 | 237 | $('.filter-learnability').click(function() { 238 | metricsList.filter(function(item) { 239 | 240 | if (item.values().category === "Learnability") { 241 | $('.sort').addClass( "disabled" ); 242 | $('.filter-all').removeClass( "active" ); 243 | $('.filter-reusability').removeClass( "active" ); 244 | $('.filter-usability').removeClass( "active" ); 245 | $('.filter-learnability').addClass( "active" ); 246 | $('.filter-performance').removeClass( "active" ); 247 | $('.filter-reliability').removeClass( "active" ); 248 | return true; 249 | } else { 250 | return false; 251 | } 252 | }); 253 | return false; 254 | }); 255 | 256 | $('.filter-performance').click(function() { 257 | metricsList.filter(function(item) { 258 | 259 | if (item.values().category === "Performance") { 260 | $('.sort').addClass( "disabled" ); 261 | $('.filter-all').removeClass( "active" ); 262 | $('.filter-reusability').removeClass( "active" ); 263 | $('.filter-usability').removeClass( "active" ); 264 | $('.filter-learnability').removeClass( "active" ); 265 | $('.filter-performance').addClass( "active" ); 266 | $('.filter-reliability').removeClass( "active" ); 267 | return true; 268 | } else { 269 | return false; 270 | } 271 | }); 272 | return false; 273 | }); 274 | 275 | $('.filter-reliability').click(function() { 276 | metricsList.filter(function(item) { 277 | 278 | if (item.values().category === "Reliability") { 279 | $('.sort').addClass( "disabled" ); 280 | $('.filter-all').removeClass( "active" ); 281 | $('.filter-reusability').removeClass( "active" ); 282 | $('.filter-usability').removeClass( "active" ); 283 | $('.filter-learnability').removeClass( "active" ); 284 | $('.filter-performance').removeClass( "active" ); 285 | $('.filter-reliability').addClass( "active" ); 286 | return true; 287 | } else { 288 | return false; 289 | } 290 | }); 291 | return false; 292 | }); -------------------------------------------------------------------------------- /css/img/blu_stripes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/blu_stripes.png -------------------------------------------------------------------------------- /css/img/congruent_pentagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/congruent_pentagon.png -------------------------------------------------------------------------------- /css/img/dark_wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/dark_wood.png -------------------------------------------------------------------------------- /css/img/escheresque_ste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/escheresque_ste.png -------------------------------------------------------------------------------- /css/img/footer_lodyas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/footer_lodyas.png -------------------------------------------------------------------------------- /css/img/graphy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/graphy.png -------------------------------------------------------------------------------- /css/img/grey_wash_wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/grey_wash_wall.png -------------------------------------------------------------------------------- /css/img/retina_wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/retina_wood.png -------------------------------------------------------------------------------- /css/img/skulls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/skulls.png -------------------------------------------------------------------------------- /css/img/symphony.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/symphony.png -------------------------------------------------------------------------------- /css/img/tiny_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/tiny_grid.png -------------------------------------------------------------------------------- /css/img/tiny_grid_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/css/img/tiny_grid_@2X.png -------------------------------------------------------------------------------- /css/main.min.css: -------------------------------------------------------------------------------- 1 | html{font-size:18px}body{font-family:'Open Sans',sans-serif;font-weight:400}.ui.header,h1,h2,h3,h4,h5{font-family:'Open Sans',sans-serif;font-weight:700}.global .blue-round-gradient{background-color:#7e8bbc;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0idnNnZyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiPjxzdG9wIHN0b3AtY29sb3I9IiNmOGI2ZmYiIHN0b3Atb3BhY2l0eT0iMSIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzAzNjA3OCIgc3RvcC1vcGFjaXR5PSIxIiBvZmZzZXQ9IjEiLz48L2xpbmVhckdyYWRpZW50PjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjdnNnZykiIC8+PC9zdmc+);background-image:-webkit-repeating-linear-gradient(top left,#f8b6ff 0,#036078 100%);background-image:repeating-linear-gradient(to bottom right,#f8b6ff 0,#036078 100%)}@media \0screen\,screen\9{.global .blue-round-gradient{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fff8b6ff", endColorstr="#ff036078", GradientType=0)}}.global .black-shine-gradient{background-color:#2b323f;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0idnNnZyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBzdG9wLWNvbG9yPSIjNDg1NTZjIiBzdG9wLW9wYWNpdHk9IjEiIG9mZnNldD0iMCIvPjxzdG9wIHN0b3AtY29sb3I9IiMxYjIxMmIiIHN0b3Atb3BhY2l0eT0iMSIgb2Zmc2V0PSIwLjUiLz48c3RvcCBzdG9wLWNvbG9yPSIjMTQxOTIyIiBzdG9wLW9wYWNpdHk9IjEiIG9mZnNldD0iMC41MSIvPjxzdG9wIHN0b3AtY29sb3I9IiMzNTNiNDUiIHN0b3Atb3BhY2l0eT0iMSIgb2Zmc2V0PSIxIi8+PC9saW5lYXJHcmFkaWVudD48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI3ZzZ2cpIiAvPjwvc3ZnPg==);background-image:-webkit-repeating-linear-gradient(top,#48556c 0,#1b212b 50%,#141922 51%,#353b45 100%);background-image:repeating-linear-gradient(to bottom,#48556c 0,#1b212b 50%,#141922 51%,#353b45 100%)}@media \0screen\,screen\9{.global .black-shine-gradient{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff48556c", endColorstr="#ff353b45", GradientType=0)}}.global .tiny-grid{background-image:url(img/tiny_grid.png)}.global .graphy{background-image:url(img/graphy.png)}.global .dark-wood{background-image:url(img/dark_wood.png)}.global .retina-wood{background-image:url(img/retina_wood.png)}.global .escheresque{background-image:url(img/escheresque_ste.png)}.global .grey-wash-wall{background-image:url(img/grey_wash_wall.png)}.global .skulls{background-image:url(img/skulls.png)}.global .symphony{background-image:url(img/symphony.png)}.global .masthead{margin:0;padding:1rem 0}.global .masthead .column{position:relative}.global .masthead .information{margin:1em}.global .slim-header-light{color:#fff;font-family:'Open Sans',sans-serif;font-weight:300;padding:0;margin:0}.global .header-3d-center{text-align:center}.global .header-3d{color:#fff;text-shadow:0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15)}.global .menu .right.menu>.mobile.item{display:none}.global .segment h1{font-size:2em;margin-bottom:1em}.global .vertical.segment{padding:3rem 0}.global .feature.segment{margin:0;padding:3rem 0}.global .feature.segment p{min-height:50px}.global .selection.list{margin:0 -.5em}.global .label.categories,.global .tag{margin-right:5px;margin-bottom:5px}.global .recent-posts-title{margin-top:5px;margin-bottom:5px}.global .thumb-img{margin-top:15px;margin-bottom:15px}.global .footer.segment{background-color:#000;padding:3rem 0}.global .copyright.segment{margin:0}.global .newsletter.button{margin-top:10px}.highlight{background:#fff}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k,.highlight .o{font-weight:700}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kp,.highlight .kr{font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086B3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne,.highlight .nf{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc,.highlight .vg,.highlight .vi{color:teal}.highlight .il{color:#099}@media only screen and (max-width:768px){.global .menu .right.menu>.item{display:none}.global .menu .right.menu>.mobile.item{display:block}.global .menu .right.menu>.mobile.item .menu{left:auto;right:0}.global .selection.list .right.floated{display:none}.global h1{font-size:2em}.global .overview .divided.grid .header .icon,.global h2{font-size:1.5em}.global .overview .divided.grid .header+p{min-height:0}.global .masthead.segment .button{font-size:1rem}.global .masthead.segment .column{font-size:.7rem}.global .masthead.segment .column p{display:none}} -------------------------------------------------------------------------------- /embeds.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: landing 3 | title: Embeds 4 | description: Reusable Embed Plugins Designed For OpenTheme 5 | --- 6 | 7 |
    8 |
    9 |
    10 |
    11 | {% include embed-cards.html cards=20 %} 12 |
    13 |
    14 |
    15 |
    16 | 17 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/favicon.ico -------------------------------------------------------------------------------- /feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | 5 | 6 | 7 | {{ site.title | xml_escape }} 8 | {{ site.description | xml_escape }} 9 | {{ site.url }}{{ site.baseurl }}/ 10 | 11 | {{ site.time | date_to_rfc822 }} 12 | {{ site.time | date_to_rfc822 }} 13 | Jekyll v{{ jekyll.version }} 14 | {% for post in site.posts limit:10 %} 15 | 16 | {{ post.title | xml_escape }} 17 | {{ post.content | xml_escape }} 18 | {{ post.date | date_to_rfc822 }} 19 | {{ post.url | prepend: site.url }} 20 | {{ post.url | prepend: site.url }} 21 | {% for tag in post.tags %} 22 | {{ tag | xml_escape }} 23 | {% endfor %} 24 | {% for cat in post.categories %} 25 | {{ cat | xml_escape }} 26 | {% endfor %} 27 | 28 | {% endfor %} 29 | 30 | 31 | -------------------------------------------------------------------------------- /google9cf5b33ea59368cf.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google9cf5b33ea59368cf.html -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | // Adapted from https://github.com/shakyShane/jekyll-gulp-sass-browser-sync 2 | 3 | var gulp = require('gulp'); 4 | var browserSync = require('browser-sync'); 5 | var sass = require('gulp-sass'); 6 | var prefix = require('gulp-autoprefixer'); 7 | var cp = require('child_process'); 8 | 9 | // Optimize 10 | var minifyCSS = require('gulp-minify-css'); 11 | var rename = require('gulp-rename'); 12 | var uglify = require('gulp-uglify'); 13 | var imagemin = require('gulp-imagemin'); 14 | var pngquant = require('imagemin-pngquant'); 15 | 16 | // Test 17 | var csslint = require('gulp-csslint'); 18 | var jshint = require('gulp-jshint'); 19 | 20 | var messages = { 21 | jekyllBuild: 'Running: $ jekyll build' 22 | }; 23 | 24 | /** 25 | * Build the Jekyll Site 26 | */ 27 | gulp.task('jekyll-build', function (done) { 28 | browserSync.notify(messages.jekyllBuild); 29 | return cp.spawn('jekyll', ['build'], {stdio: 'inherit'}) 30 | .on('close', done); 31 | }); 32 | 33 | /** 34 | * Rebuild Jekyll & do page reload 35 | */ 36 | gulp.task('jekyll-rebuild', ['jekyll-build'], function () { 37 | browserSync.reload(); 38 | }); 39 | 40 | /** 41 | * Wait for sass, jekyll-build, coffee then launch the Server 42 | */ 43 | gulp.task('browser-sync', ['sass', 'jekyll-build', 'coffee'], function() { 44 | browserSync({ 45 | host: '0.0.0.0', // For Cloud9 IDE Previews. Remove for localhost 46 | port: '8080', // For Cloud9 IDE Previews. Remove for browserSync default 47 | server: { 48 | baseDir: '_site' 49 | } 50 | }); 51 | }); 52 | 53 | /** 54 | * Wait for jekyll-build to process liquid markup in JS, then coffee 55 | */ 56 | gulp.task('coffee', ['jekyll-build'], function() { 57 | return gulp.src('_site/coffee/*.js') 58 | .pipe(jshint('.jshintrc')) 59 | .pipe(jshint.reporter('jshint-stylish')) 60 | .pipe(gulp.dest('js')) 61 | .pipe(gulp.dest('_site/js')) 62 | .pipe(uglify()) 63 | .pipe(rename({suffix: '.min'})) 64 | .pipe(gulp.dest('js')) 65 | .pipe(browserSync.reload({stream:true})) 66 | .pipe(gulp.dest('_site/js')) 67 | }); 68 | 69 | /** 70 | * Compile files from _sass into both _site/css (for live injecting) and site (for future jekyll builds) 71 | */ 72 | gulp.task('sass', function () { 73 | return gulp.src('_sass/main.scss') 74 | .pipe(sass({ 75 | includePaths: ['scss'], 76 | style: 'expanded', // Human readable CSS 77 | onError: browserSync.notify 78 | })) 79 | .pipe(prefix(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true })) 80 | .pipe(gulp.dest('_site/css')) 81 | .pipe(gulp.dest('css')) 82 | // Create using https://github.com/CSSLint/csslint/wiki/Rules-by-ID 83 | // Get defaults from https://github.com/twbs/bootstrap/blob/master/less/.csslintrc 84 | .pipe(csslint('.csslintrc')) 85 | .pipe(csslint.reporter()) 86 | .pipe(minifyCSS()) 87 | .pipe(rename({suffix: '.min'})) 88 | .pipe(gulp.dest('_site/css')) 89 | .pipe(browserSync.reload({stream:true})) 90 | .pipe(gulp.dest('css')); 91 | }); 92 | 93 | gulp.task('images', function () { 94 | return gulp.src(['_images/*', '_images/*/*']) 95 | .pipe(imagemin({ 96 | progressive: true, 97 | svgoPlugins: [{removeViewBox: false}], 98 | use: [pngquant({ quality: '65-80', speed: 4 })] 99 | })) 100 | .pipe(gulp.dest('img')); 101 | }); 102 | 103 | /** 104 | * Watch scss files for changes & recompile 105 | * Watch html/md files, run jekyll & reload BrowserSync 106 | */ 107 | gulp.task('watch', function () { 108 | gulp.watch('coffee/*.js', ['jekyll-build', 'coffee']); 109 | gulp.watch('_sass/*.scss', ['sass']); 110 | gulp.watch(['index.html', '_layouts/*.html', '_includes/*.html', '_posts/*', '_posts/*/*', '_data/*'], ['jekyll-rebuild']); 111 | }); 112 | 113 | /** 114 | * Default task, running just `gulp` will compile the sass, 115 | * compile the jekyll site, launch BrowserSync & watch files. 116 | */ 117 | gulp.task('default', ['browser-sync', 'watch']); 118 | gulp.task('img', ['images']); -------------------------------------------------------------------------------- /img/app/fusion-grid-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/app/fusion-grid-chart.png -------------------------------------------------------------------------------- /img/app/fusion-grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/app/fusion-grid.png -------------------------------------------------------------------------------- /img/app/fusion-map-grid-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/app/fusion-map-grid-chart.png -------------------------------------------------------------------------------- /img/app/kml-sandy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/app/kml-sandy.png -------------------------------------------------------------------------------- /img/blog/open-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/blog/open-workflow.png -------------------------------------------------------------------------------- /img/embed/addthis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/addthis.png -------------------------------------------------------------------------------- /img/embed/disqus-splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/disqus-splash.png -------------------------------------------------------------------------------- /img/embed/flexslider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/flexslider.png -------------------------------------------------------------------------------- /img/embed/google-cse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/google-cse.png -------------------------------------------------------------------------------- /img/embed/mailchimp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/mailchimp.png -------------------------------------------------------------------------------- /img/embed/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/map.png -------------------------------------------------------------------------------- /img/embed/panoramio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/panoramio.png -------------------------------------------------------------------------------- /img/embed/twitter-bird.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/twitter-bird.jpg -------------------------------------------------------------------------------- /img/embed/uservoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/uservoice.png -------------------------------------------------------------------------------- /img/embed/youtube-splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/embed/youtube-splash.png -------------------------------------------------------------------------------- /img/opentheme-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/opentheme-workflow.png -------------------------------------------------------------------------------- /img/wireframe/centered-paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/centered-paragraph.png -------------------------------------------------------------------------------- /img/wireframe/image-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/image-square.png -------------------------------------------------------------------------------- /img/wireframe/image-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/image-text.png -------------------------------------------------------------------------------- /img/wireframe/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/image.png -------------------------------------------------------------------------------- /img/wireframe/media-paragraph-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/media-paragraph-alt.png -------------------------------------------------------------------------------- /img/wireframe/media-paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/media-paragraph.png -------------------------------------------------------------------------------- /img/wireframe/paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/paragraph.png -------------------------------------------------------------------------------- /img/wireframe/short-paragraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/short-paragraph.png -------------------------------------------------------------------------------- /img/wireframe/square-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/square-image.png -------------------------------------------------------------------------------- /img/wireframe/text-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/text-image.png -------------------------------------------------------------------------------- /img/wireframe/white-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/img/wireframe/white-image.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: landing 3 | title: Home 4 | --- 5 | 6 |
    7 |
    8 |
    9 |
    10 |
    11 |
    12 | 13 | Free GitHub Hosting 14 |
    15 |

    Free world-class hosting for your website on world's largest open source repository.

    16 |
    17 |
    18 |
    19 | 20 | Semantic UI Goodness 21 |
    22 |

    Create rich, modern user experience with tags as easy as describing design in English.

    23 |
    24 |
    25 |
    26 | 27 | Jekyll Pre-processing 28 |
    29 |

    No server or database to maintain. No plugin hassels. Just focus on your content.

    30 |
    31 |
    32 |
    33 |
    34 |
    35 | 36 |
    37 |
    38 |
    39 |
    40 |

    OpenTheme Helps Re-Imagine Web Design

    41 |

    42 | Design a website that self monitors as it changes! 43 |

    44 |

    45 | Create mobile hybrid apps in just 3 lines of code! 46 |

    47 |

    48 | Author real-time content using plugin embeds. 49 |

    50 |

    51 | Manage content 100% on Cloud, in Browser. 52 |

    53 |

    54 | Publish data driven docs, without a database. 55 |

    56 |
    57 |
    58 | {% include feature-post.html %} 59 |
    60 |
    61 |
    62 |
    63 | 64 | 65 |
    66 |
    67 |
    68 |
    69 |
    70 |
    71 | 72 | Hybrid Apps 73 |
    74 |

    Responsive theme supporting multiple devices with one code base. Design once, publish anywhere.

    75 |
    76 |
    77 |
    78 | 79 | Live Tests 80 |
    81 |

    Travis CI integrated. BrowserSync ready. Lint JS, CSS on build. HTML proofing planned.

    82 |
    83 |
    84 |
    85 | 86 | Speed Optimized 87 |
    88 |

    PageSpeed Insights built-in. Images optimized in build. CSS, JS minified. Selective JS includes.

    89 |
    90 |
    91 |
    92 |
    93 |
    94 | 95 |
    96 | 152 |
    153 | 154 |
    155 |
    156 |
    157 |
    158 |

    159 | Browse OpenTheme Content 160 |

    161 |
    162 |
    163 |
    164 |
    165 | 166 |

    Tags

    167 | {% include site-tags.html %} 168 | 169 |
    170 | 171 |
    172 | 173 |

    Categories

    174 | {% include site-categories.html %} 175 | 176 |
    177 | 178 |
    179 |
    180 |
    181 | 182 | -------------------------------------------------------------------------------- /js/metrics.js: -------------------------------------------------------------------------------- 1 | $('.percent').progress(); 2 | 3 | // ====== PageSpeed API - Desktop ===== 4 | 5 | // Specify your actual API key here: 6 | var API_KEY = 'AIzaSyDmt_iRsE8kQ1glUPC2GZpNLBsw1Laj9_0'; 7 | 8 | // Specify the URL you want PageSpeed results for here: 9 | var URL_TO_GET_RESULTS_FOR = 'http://opentheme.co/'; 10 | 11 | var API_URL = 'https://www.googleapis.com/pagespeedonline/v1/runPagespeed?'; 12 | 13 | // Object that will hold the callbacks that process results from the 14 | // PageSpeed Insights API. 15 | var callbacks = {} 16 | 17 | // Invokes the PageSpeed Insights API. The response will contain 18 | // JavaScript that invokes our callback with the PageSpeed results. 19 | function runPagespeed() { 20 | var s = document.createElement('script'); 21 | s.type = 'text/javascript'; 22 | s.async = true; 23 | var query = [ 24 | 'url=' + URL_TO_GET_RESULTS_FOR, 25 | 'callback=runPagespeedCallbacks', 26 | 'key=' + API_KEY, 27 | ].join('&'); 28 | s.src = API_URL + query; 29 | document.head.insertBefore(s, null); 30 | } 31 | 32 | // Our JSONP callback. Checks for errors, then invokes our callback handlers. 33 | function runPagespeedCallbacks(result) { 34 | if (result.error) { 35 | var errors = result.error.errors; 36 | for (var i = 0, len = errors.length; i < len; ++i) { 37 | if (errors[i].reason == 'badRequest' && API_KEY == 'AIzaSyDmt_iRsE8kQ1glUPC2GZpNLBsw1Laj9_0') { 38 | alert('Please specify your Google API key in the API_KEY variable.'); 39 | } else { 40 | // NOTE: your real production app should use a better 41 | // mechanism than alert() to communicate the error to the user. 42 | alert(errors[i].message); 43 | } 44 | } 45 | return; 46 | } 47 | 48 | // Dispatch to each function on the callbacks object. 49 | for (var fn in callbacks) { 50 | var f = callbacks[fn]; 51 | if (typeof f == 'function') { 52 | callbacks[fn](result); 53 | } 54 | } 55 | } 56 | 57 | // Invoke the callback that fetches results. Async here so we're sure 58 | // to discover any callbacks registered below, but this can be 59 | // synchronous in your code. 60 | setTimeout(runPagespeed, 0); 61 | 62 | callbacks.displayPageSpeedScore = function(result) { 63 | $( ".desktop-pagespeed" ).attr( "data-percent", result.score.toString() ); 64 | $( ".desktop-pagespeed-value" ).text( "*" + result.score.toString() ); 65 | $('.desktop-pagespeed').progress(); 66 | 67 | var results = []; 68 | var ruleResults = result.formattedResults.ruleResults; 69 | for (var i in ruleResults) { 70 | var ruleResult = ruleResults[i]; 71 | // Don't display lower-impact suggestions. 72 | if (ruleResult.ruleImpact < 3.0) continue; 73 | results.push({name: ruleResult.localizedRuleName, 74 | impact: ruleResult.ruleImpact}); 75 | } 76 | results.sort(sortByImpact); 77 | var r = ""; 78 | for (var i = 0, len = results.length; i < len; ++i) { 79 | r = r + "
  • " + results[i].name + "
  • "; 80 | } 81 | var ul = ""; 82 | 83 | if (ul.length > 9) { 84 | $(".desktop-suggestions").html("

    Suggestions to Improve

    " + ul); 85 | } else { 86 | $(".desktop-suggestions").text('

    No high impact suggestions. Good job!

    '); 87 | } 88 | 89 | }; 90 | 91 | // ====== PageSpeed API - Mobile ===== 92 | 93 | // Object that will hold the callbacks that process results from the 94 | // PageSpeed Insights API. 95 | var callbacks_m = {} 96 | 97 | // Invokes the PageSpeed Insights API. The response will contain 98 | // JavaScript that invokes our callback with the PageSpeed results. 99 | function runPagespeed_m() { 100 | var s = document.createElement('script'); 101 | s.type = 'text/javascript'; 102 | s.async = true; 103 | var query = [ 104 | 'url=' + URL_TO_GET_RESULTS_FOR, 105 | 'strategy=mobile', 106 | 'callback=runPagespeedCallbacks_m', 107 | 'key=' + API_KEY, 108 | ].join('&'); 109 | s.src = API_URL + query; 110 | document.head.insertBefore(s, null); 111 | } 112 | 113 | // Our JSONP callback. Checks for errors, then invokes our callback handlers. 114 | function runPagespeedCallbacks_m(result) { 115 | if (result.error) { 116 | var errors = result.error.errors; 117 | for (var i = 0, len = errors.length; i < len; ++i) { 118 | if (errors[i].reason == 'badRequest' && API_KEY == 'AIzaSyDmt_iRsE8kQ1glUPC2GZpNLBsw1Laj9_0') { 119 | alert('Please specify your Google API key in the API_KEY variable.'); 120 | } else { 121 | // NOTE: your real production app should use a better 122 | // mechanism than alert() to communicate the error to the user. 123 | alert(errors[i].message); 124 | } 125 | } 126 | return; 127 | } 128 | 129 | // Dispatch to each function on the callbacks object. 130 | for (var fn in callbacks_m) { 131 | var f = callbacks_m[fn]; 132 | if (typeof f == 'function') { 133 | callbacks_m[fn](result); 134 | } 135 | } 136 | } 137 | 138 | // Invoke the callback that fetches results. Async here so we're sure 139 | // to discover any callbacks registered below, but this can be 140 | // synchronous in your code. 141 | setTimeout(runPagespeed_m, 0); 142 | 143 | callbacks_m.displayPageSpeedScore = function(result) { 144 | $( ".mobile-pagespeed" ).attr( "data-percent", result.score.toString() ); 145 | $( ".mobile-pagespeed-value" ).text( "*" + result.score.toString() ); 146 | $('.mobile-pagespeed').progress(); 147 | 148 | var results = []; 149 | var ruleResults = result.formattedResults.ruleResults; 150 | for (var i in ruleResults) { 151 | var ruleResult = ruleResults[i]; 152 | // Don't display lower-impact suggestions. 153 | if (ruleResult.ruleImpact < 3.0) continue; 154 | results.push({name: ruleResult.localizedRuleName, 155 | impact: ruleResult.ruleImpact}); 156 | } 157 | results.sort(sortByImpact); 158 | var r = ""; 159 | for (var i = 0, len = results.length; i < len; ++i) { 160 | r = r + "
  • " + results[i].name + "
  • "; 161 | } 162 | var ul = ""; 163 | 164 | if (ul.length > 9) { 165 | $(".mobile-suggestions").html("

    Suggestions to Improve

    " + ul); 166 | } else { 167 | $(".mobile-suggestions").text('

    No high impact suggestions. Good job!

    '); 168 | } 169 | 170 | 171 | }; 172 | 173 | // Helper function that sorts results in order of impact. 174 | function sortByImpact(a, b) { return b.impact - a.impact; } 175 | 176 | // ====== ListJS ====== 177 | 178 | var options = { 179 | valueNames: [ 'category', 'title' ] 180 | }; 181 | 182 | var metricsList = new List('metrics-list', options); 183 | 184 | $('.filter-all').click(function() { 185 | metricsList.filter(); 186 | $('.sort').removeClass( "disabled" ); 187 | $('.filter-all').addClass( "active" ); 188 | $('.filter-reusability').removeClass( "active" ); 189 | $('.filter-usability').removeClass( "active" ); 190 | $('.filter-learnability').removeClass( "active" ); 191 | $('.filter-performance').removeClass( "active" ); 192 | $('.filter-reliability').removeClass( "active" ); 193 | return false; 194 | }); 195 | 196 | $('.filter-reusability').click(function() { 197 | metricsList.filter(function(item) { 198 | 199 | if (item.values().category === "Reusability") { 200 | $('.sort').addClass( "disabled" ); 201 | $('.filter-all').removeClass( "active" ); 202 | $('.filter-reusability').addClass( "active" ); 203 | $('.filter-usability').removeClass( "active" ); 204 | $('.filter-learnability').removeClass( "active" ); 205 | $('.filter-performance').removeClass( "active" ); 206 | $('.filter-reliability').removeClass( "active" ); 207 | return true; 208 | } else { 209 | return false; 210 | } 211 | }); 212 | return false; 213 | }); 214 | 215 | 216 | $('.filter-usability').click(function() { 217 | metricsList.filter(function(item) { 218 | 219 | if (item.values().category === "Usability") { 220 | $('.sort').addClass( "disabled" ); 221 | $('.filter-all').removeClass( "active" ); 222 | $('.filter-reusability').removeClass( "active" ); 223 | $('.filter-usability').addClass( "active" ); 224 | $('.filter-learnability').removeClass( "active" ); 225 | $('.filter-performance').removeClass( "active" ); 226 | $('.filter-reliability').removeClass( "active" ); 227 | return true; 228 | } else { 229 | return false; 230 | } 231 | }); 232 | return false; 233 | }); 234 | 235 | $('.filter-learnability').click(function() { 236 | metricsList.filter(function(item) { 237 | 238 | if (item.values().category === "Learnability") { 239 | $('.sort').addClass( "disabled" ); 240 | $('.filter-all').removeClass( "active" ); 241 | $('.filter-reusability').removeClass( "active" ); 242 | $('.filter-usability').removeClass( "active" ); 243 | $('.filter-learnability').addClass( "active" ); 244 | $('.filter-performance').removeClass( "active" ); 245 | $('.filter-reliability').removeClass( "active" ); 246 | return true; 247 | } else { 248 | return false; 249 | } 250 | }); 251 | return false; 252 | }); 253 | 254 | $('.filter-performance').click(function() { 255 | metricsList.filter(function(item) { 256 | 257 | if (item.values().category === "Performance") { 258 | $('.sort').addClass( "disabled" ); 259 | $('.filter-all').removeClass( "active" ); 260 | $('.filter-reusability').removeClass( "active" ); 261 | $('.filter-usability').removeClass( "active" ); 262 | $('.filter-learnability').removeClass( "active" ); 263 | $('.filter-performance').addClass( "active" ); 264 | $('.filter-reliability').removeClass( "active" ); 265 | return true; 266 | } else { 267 | return false; 268 | } 269 | }); 270 | return false; 271 | }); 272 | 273 | $('.filter-reliability').click(function() { 274 | metricsList.filter(function(item) { 275 | 276 | if (item.values().category === "Reliability") { 277 | $('.sort').addClass( "disabled" ); 278 | $('.filter-all').removeClass( "active" ); 279 | $('.filter-reusability').removeClass( "active" ); 280 | $('.filter-usability').removeClass( "active" ); 281 | $('.filter-learnability').removeClass( "active" ); 282 | $('.filter-performance').removeClass( "active" ); 283 | $('.filter-reliability').addClass( "active" ); 284 | return true; 285 | } else { 286 | return false; 287 | } 288 | }); 289 | return false; 290 | }); -------------------------------------------------------------------------------- /js/metrics.min.js: -------------------------------------------------------------------------------- 1 | function runPagespeed(){var e=document.createElement("script");e.type="text/javascript",e.async=!0;var a=["url="+URL_TO_GET_RESULTS_FOR,"callback=runPagespeedCallbacks","key="+API_KEY].join("&");e.src=API_URL+a,document.head.insertBefore(e,null)}function runPagespeedCallbacks(e){if(e.error)for(var a=e.error.errors,t=0,r=a.length;r>t;++t)alert("badRequest"==a[t].reason&&"AIzaSyDmt_iRsE8kQ1glUPC2GZpNLBsw1Laj9_0"==API_KEY?"Please specify your Google API key in the API_KEY variable.":a[t].message);else for(var i in callbacks){var l=callbacks[i];"function"==typeof l&&callbacks[i](e)}}function runPagespeed_m(){var e=document.createElement("script");e.type="text/javascript",e.async=!0;var a=["url="+URL_TO_GET_RESULTS_FOR,"strategy=mobile","callback=runPagespeedCallbacks_m","key="+API_KEY].join("&");e.src=API_URL+a,document.head.insertBefore(e,null)}function runPagespeedCallbacks_m(e){if(e.error)for(var a=e.error.errors,t=0,r=a.length;r>t;++t)alert("badRequest"==a[t].reason&&"AIzaSyDmt_iRsE8kQ1glUPC2GZpNLBsw1Laj9_0"==API_KEY?"Please specify your Google API key in the API_KEY variable.":a[t].message);else for(var i in callbacks_m){var l=callbacks_m[i];"function"==typeof l&&callbacks_m[i](e)}}function sortByImpact(e,a){return a.impact-e.impact}$(".percent").progress();var API_KEY="AIzaSyDmt_iRsE8kQ1glUPC2GZpNLBsw1Laj9_0",URL_TO_GET_RESULTS_FOR="http://opentheme.co/",API_URL="https://www.googleapis.com/pagespeedonline/v1/runPagespeed?",callbacks={};setTimeout(runPagespeed,0),callbacks.displayPageSpeedScore=function(e){$(".desktop-pagespeed").attr("data-percent",e.score.toString()),$(".desktop-pagespeed-value").text("*"+e.score.toString()),$(".desktop-pagespeed").progress();var a=[],t=e.formattedResults.ruleResults;for(var r in t){var i=t[r];i.ruleImpact<3||a.push({name:i.localizedRuleName,impact:i.ruleImpact})}a.sort(sortByImpact);for(var l="",r=0,s=a.length;s>r;++r)l=l+"
  • "+a[r].name+"
  • ";var o="";o.length>9?$(".desktop-suggestions").html("

    Suggestions to Improve

    "+o):$(".desktop-suggestions").text("

    No high impact suggestions. Good job!

    ")};var callbacks_m={};setTimeout(runPagespeed_m,0),callbacks_m.displayPageSpeedScore=function(e){$(".mobile-pagespeed").attr("data-percent",e.score.toString()),$(".mobile-pagespeed-value").text("*"+e.score.toString()),$(".mobile-pagespeed").progress();var a=[],t=e.formattedResults.ruleResults;for(var r in t){var i=t[r];i.ruleImpact<3||a.push({name:i.localizedRuleName,impact:i.ruleImpact})}a.sort(sortByImpact);for(var l="",r=0,s=a.length;s>r;++r)l=l+"
  • "+a[r].name+"
  • ";var o="";o.length>9?$(".mobile-suggestions").html("

    Suggestions to Improve

    "+o):$(".mobile-suggestions").text("

    No high impact suggestions. Good job!

    ")};var options={valueNames:["category","title"]},metricsList=new List("metrics-list",options);$(".filter-all").click(function(){return metricsList.filter(),$(".sort").removeClass("disabled"),$(".filter-all").addClass("active"),$(".filter-reusability").removeClass("active"),$(".filter-usability").removeClass("active"),$(".filter-learnability").removeClass("active"),$(".filter-performance").removeClass("active"),$(".filter-reliability").removeClass("active"),!1}),$(".filter-reusability").click(function(){return metricsList.filter(function(e){return"Reusability"===e.values().category?($(".sort").addClass("disabled"),$(".filter-all").removeClass("active"),$(".filter-reusability").addClass("active"),$(".filter-usability").removeClass("active"),$(".filter-learnability").removeClass("active"),$(".filter-performance").removeClass("active"),$(".filter-reliability").removeClass("active"),!0):!1}),!1}),$(".filter-usability").click(function(){return metricsList.filter(function(e){return"Usability"===e.values().category?($(".sort").addClass("disabled"),$(".filter-all").removeClass("active"),$(".filter-reusability").removeClass("active"),$(".filter-usability").addClass("active"),$(".filter-learnability").removeClass("active"),$(".filter-performance").removeClass("active"),$(".filter-reliability").removeClass("active"),!0):!1}),!1}),$(".filter-learnability").click(function(){return metricsList.filter(function(e){return"Learnability"===e.values().category?($(".sort").addClass("disabled"),$(".filter-all").removeClass("active"),$(".filter-reusability").removeClass("active"),$(".filter-usability").removeClass("active"),$(".filter-learnability").addClass("active"),$(".filter-performance").removeClass("active"),$(".filter-reliability").removeClass("active"),!0):!1}),!1}),$(".filter-performance").click(function(){return metricsList.filter(function(e){return"Performance"===e.values().category?($(".sort").addClass("disabled"),$(".filter-all").removeClass("active"),$(".filter-reusability").removeClass("active"),$(".filter-usability").removeClass("active"),$(".filter-learnability").removeClass("active"),$(".filter-performance").addClass("active"),$(".filter-reliability").removeClass("active"),!0):!1}),!1}),$(".filter-reliability").click(function(){return metricsList.filter(function(e){return"Reliability"===e.values().category?($(".sort").addClass("disabled"),$(".filter-all").removeClass("active"),$(".filter-reusability").removeClass("active"),$(".filter-usability").removeClass("active"),$(".filter-learnability").removeClass("active"),$(".filter-performance").removeClass("active"),$(".filter-reliability").addClass("active"),!0):!1}),!1}); -------------------------------------------------------------------------------- /metrics.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: metrics-layout 3 | title: Metrics 4 | description: Measuring OpenTheme Across Usability, Reusability, Performance. 5 | --- 6 | 7 |
    8 |
    9 | 10 |
    11 |
    12 | 13 |
    14 |
    15 |
    16 | 17 |
    18 | 19 | Sort Category 20 |
    21 |
    22 |
    23 |
    24 | 25 |
    26 |
    27 | 28 | 29 | 61 |
    62 |
    63 | Star (*) status shows Real-time data using metric specific APIs. 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | {% for metric in site.data.metrics %} 74 | 75 | 76 | 91 | 119 | 120 | {% endfor %} 121 | 122 |
    CategoryMetricStatus
    {{ metric.category }} 77 | {{ metric.title }} 78 | {% if metric.type == 'Percent' %} 79 | {% include metrics-percent.html current=metric.current evaluate=metric.evaluate %} 80 | {% endif %} 81 | 82 | {% if metric.evaluate == 'Desktop PageSpeed' %} 83 |
    84 | {% endif %} 85 | 86 | {% if metric.evaluate == 'Mobile PageSpeed' %} 87 |
    88 | {% endif %} 89 | 90 |
    92 | {% if metric.type == 'Liquid' %} 93 | {% include metrics-liquid.html evaluate=metric.evaluate source=metric.source %} 94 | {% endif %} 95 | {% if metric.type == 'Percent' %} 96 | {% include metrics-percent.html current=metric.current evaluate=metric.evaluate source=metric.source %} 97 | {% endif %} 98 | {% if metric.type == 'Badge' %} 99 | 100 |
    101 | 102 |
    103 |
    104 | {{ metric.evaluate }} 105 |
    106 |
    107 | {% endif %} 108 | {% if metric.type == 'Pass/Fail' %} 109 | 110 |
    111 | {{ metric.current }} 112 |
    113 |
    114 | {{ metric.evaluate }} 115 |
    116 |
    117 | {% endif %} 118 |
    123 | 124 |
    125 | 126 |
    127 |
    128 |
    129 | 130 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "opentheme", 3 | "version": "0.0.0", 4 | "description": "Powerful New Theme for GitHub Pages", 5 | "main": "gulpfile.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "Manav Sehgal", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "browser-sync": "^1.3.7", 13 | "gulp": "^3.8.8", 14 | "gulp-autoprefixer": "1.0.0", 15 | "gulp-csslint": "^0.1.5", 16 | "gulp-imagemin": "^2.1.0", 17 | "gulp-jshint": "^1.9.0", 18 | "gulp-minify-css": "^0.3.12", 19 | "gulp-rename": "^1.2.0", 20 | "gulp-sass": "^0.7.3", 21 | "gulp-uglify": "^1.0.2", 22 | "imagemin-pngquant": "^4.0.0", 23 | "jshint-stylish": "^1.0.0" 24 | }, 25 | "repository": { 26 | "type": "git", 27 | "url": "https://github.com/open-start/opentheme.git" 28 | }, 29 | "keywords": [ 30 | "jekyll", 31 | "semantic ui", 32 | "github pages", 33 | "theme" 34 | ], 35 | "bugs": { 36 | "url": "https://github.com/open-start/opentheme/issues" 37 | }, 38 | "homepage": "https://github.com/open-start/opentheme" 39 | } 40 | -------------------------------------------------------------------------------- /panoramio.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: panoramio 3 | title: Google Maps Panoramio Demo 4 | description: Add geo-tagged image search, places search to a map. 5 | image: /img/embed/panoramio.png 6 | --- 7 |
    8 |
    9 |
    10 |

    Example of map with three ways to discover content. Search by location (try Empire State Building) 11 | or type of location (try indian restaurant) to see icons on map. 12 | Zoom out to see photos geo-tagged to the location. 13 | Then filter photos by tag (try building). Click on a photo to see details.

    14 |
    15 | 16 | 17 |
    18 |
    19 |
    -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | # www.robotstxt.org/ 4 | 5 | # Allow crawling of all content 6 | User-agent: * 7 | Disallow: 8 | 9 | # Announce sitemap - https://support.google.com/webmasters/answer/183668 10 | Sitemap: {{site.url}}/sitemap.xml -------------------------------------------------------------------------------- /script/cibuild.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e # halt script on error 3 | 4 | bundle exec jekyll build 5 | -------------------------------------------------------------------------------- /script/clone.sh: -------------------------------------------------------------------------------- 1 | git checkout gh-pages && git rebase master && git push origin gh-pages && git checkout master 2 | -------------------------------------------------------------------------------- /script/publish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e # halt script on error 3 | 4 | git add --all 5 | git commit -m "Quick Publish" 6 | git push origin master 7 | # Clone 8 | git checkout gh-pages && git rebase master && git push origin gh-pages && git checkout master -------------------------------------------------------------------------------- /script/shove.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e # halt script on error 3 | 4 | if [ -z "$1" ] 5 | then 6 | echo "Add Commit Message" 7 | exit 1 8 | fi 9 | git add --all 10 | git commit -m "$1" 11 | git push origin master -------------------------------------------------------------------------------- /script/srv.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e # halt script on error 3 | 4 | # bundle exec jekyll build 5 | # bundle exec htmlproof ./_site 6 | bundle exec jekyll serve --port 8080 --host 0.0.0.0 --safe --baseurl '' -------------------------------------------------------------------------------- /search.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: landing 3 | title: Search 4 | description: Search OpenTheme content using Google Custom Search Engine. 5 | --- 6 | 7 |
    8 |
    9 |
    10 |
    11 | {% if site.google_cse_id %} 12 | 24 | 25 | {% endif %} 26 |
    27 |
    28 |
    29 |
    30 | -------------------------------------------------------------------------------- /sitemap.xml: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | 5 | 6 | {% for post in site.posts %} 7 | 8 | {{ site.url }}{{ post.url | remove: 'index.html' }} 9 | 10 | {% endfor %} 11 | 12 | {% for page in site.pages %} 13 | {% if page.layout != nil %} 14 | {% if page.layout != 'redirect' %} 15 | 16 | {{ site.url }}{{ page.url | remove: 'index.html' }} 17 | 18 | {% endif %} 19 | {% endif %} 20 | {% endfor %} 21 | -------------------------------------------------------------------------------- /static-data/All_Ships_CL.kmz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manavsehgal/opentheme/bc9ca0be06ef613b31c56cc9ba0253a98e273381/static-data/All_Ships_CL.kmz -------------------------------------------------------------------------------- /static-data/lake-michigan-ship-routes.kml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Lake Michigan Shipping Routes and Lighthouses 5 | In order to determine whether or not the age old story of the lighthouse safely bringing the ship to shore was only an occasional occurrence, I decided to map out the shipping routes of Lake Michigan, and see how closely they came to the lighthouses in the area. 6 | 7 | xxghost 8 | 9 | 10 | 11 | 12 | 13 | 1 14 | 15 | http://geocommons.com/maps/257754/layers/0.kmz?timestamp=MjAxMy0wNC0yNiAwMToxNDozNyBVVEM%3D 16 | 17 | 18 | 19 | 20 | 1 21 | 22 | http://geocommons.com/maps/257754/layers/1.kmz?timestamp=MjAxMy0wNC0yNiAwMToxNDozNyBVVEM%3D 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /static-data/significant_month.geojson: -------------------------------------------------------------------------------- 1 | {"type":"FeatureCollection","metadata":{"generated":1420608850000,"url":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.geojson","title":"USGS Significant Earthquakes, Past Month","status":200,"api":"1.0.13","count":7},"features":[{"type":"Feature","properties":{"mag":6.6,"place":"245km S of Punta de Burica, Panama","time":1420607228430,"updated":1420608663513,"tz":-360,"url":"http://earthquake.usgs.gov/earthquakes/eventpage/usc000tcba","detail":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/usc000tcba.geojson","felt":0,"cdi":1,"mmi":3.82,"alert":null,"status":"reviewed","tsunami":1,"sig":670,"net":"us","code":"c000tcba","ids":",pt15007000,at00nhsjk9,usc000tcba,","sources":",pt,at,us,","types":",cap,dyfi,general-link,geoserve,impact-link,nearby-cities,origin,phase-data,shakemap,tectonic-summary,","nst":null,"dmin":6.532,"rms":1.22,"gap":69,"magType":"mwp","type":"earthquake","title":"M 6.6 - 245km S of Punta de Burica, Panama"},"geometry":{"type":"Point","coordinates":[-82.6523,5.828,10]},"id":"usc000tcba"}, 2 | {"type":"Feature","properties":{"mag":3.6,"place":"6km ENE of Irving, Texas","time":1420591929060,"updated":1420608764388,"tz":-360,"url":"http://earthquake.usgs.gov/earthquakes/eventpage/usc000tca7","detail":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/usc000tca7.geojson","felt":1661,"cdi":4.9,"mmi":3.84,"alert":null,"status":"reviewed","tsunami":null,"sig":689,"net":"us","code":"c000tca7","ids":",usc000tca7,","sources":",us,","types":",cap,dyfi,general-link,geoserve,nearby-cities,origin,phase-data,shakemap,tectonic-summary,","nst":null,"dmin":0.579,"rms":0.57,"gap":36,"magType":"mb_lg","type":"earthquake","title":"M 3.6 - 6km ENE of Irving, Texas"},"geometry":{"type":"Point","coordinates":[-96.8898,32.8373,5]},"id":"usc000tca7"}, 3 | {"type":"Feature","properties":{"mag":4.25,"place":"14km N of Castaic, California","time":1420341489480,"updated":1420520676284,"tz":-480,"url":"http://earthquake.usgs.gov/earthquakes/eventpage/ci37301704","detail":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/ci37301704.geojson","felt":2833,"cdi":4.3,"mmi":5.38,"alert":"green","status":"reviewed","tsunami":1,"sig":708,"net":"ci","code":"37301704","ids":",ci37301704,at00nhmui8,usc000tbj6,","sources":",ci,at,us,","types":",cap,dyfi,focal-mechanism,general-link,geoserve,impact-link,losspager,moment-tensor,nearby-cities,origin,phase-data,scitech-link,shakemap,","nst":89,"dmin":0.07703,"rms":0.24,"gap":46,"magType":"mw","type":"earthquake","title":"M 4.3 - 14km N of Castaic, California"},"geometry":{"type":"Point","coordinates":[-118.6301667,34.6173333,8.84]},"id":"ci37301704"}, 4 | {"type":"Feature","properties":{"mag":4.9,"place":"9km ENE of Challis, Idaho","time":1420307043470,"updated":1420591822940,"tz":-420,"url":"http://earthquake.usgs.gov/earthquakes/eventpage/usc000tbfq","detail":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/usc000tbfq.geojson","felt":1117,"cdi":5.6,"mmi":5.18,"alert":"green","status":"reviewed","tsunami":null,"sig":929,"net":"us","code":"c000tbfq","ids":",usc000tbfq,mb15159774,uu60097467,","sources":",us,mb,uu,","types":",cap,dyfi,general-link,geoserve,impact-text,losspager,moment-tensor,nearby-cities,origin,phase-data,shakemap,","nst":null,"dmin":0.104,"rms":1.37,"gap":10,"magType":"mwr","type":"earthquake","title":"M 4.9 - 9km ENE of Challis, Idaho"},"geometry":{"type":"Point","coordinates":[-114.1219,44.5365,8.08]},"id":"usc000tbfq"}, 5 | {"type":"Feature","properties":{"mag":3.88,"place":"16km S of San Pedro, California","time":1419981977690,"updated":1420576403919,"tz":-480,"url":"http://earthquake.usgs.gov/earthquakes/eventpage/ci37300400","detail":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/ci37300400.geojson","felt":1518,"cdi":4.2,"mmi":5.14,"alert":null,"status":"reviewed","tsunami":1,"sig":652,"net":"ci","code":"37300400","ids":",ci37300400,at00nhf53s,","sources":",ci,at,","types":",cap,dyfi,focal-mechanism,general-link,geoserve,impact-link,nearby-cities,origin,phase-data,scitech-link,shakemap,","nst":86,"dmin":0.1279,"rms":0.25,"gap":113,"magType":"ml","type":"earthquake","title":"M 3.9 - 16km S of San Pedro, California"},"geometry":{"type":"Point","coordinates":[-118.272,33.5856667,1.14]},"id":"ci37300400"}, 6 | {"type":"Feature","properties":{"mag":6.3,"place":"157km WNW of Tobelo, Indonesia","time":1419161653630,"updated":1419465399137,"tz":480,"url":"http://earthquake.usgs.gov/earthquakes/eventpage/usc000t8vq","detail":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/usc000t8vq.geojson","felt":0,"cdi":1,"mmi":3.96,"alert":"green","status":"reviewed","tsunami":null,"sig":611,"net":"us","code":"c000t8vq","ids":",pt14355000,usc000t8vq,gcmt20141221113414,","sources":",pt,us,gcmt,","types":",cap,dyfi,general-link,geoserve,losspager,moment-tensor,nearby-cities,origin,phase-data,shakemap,tectonic-summary,","nst":null,"dmin":1.517,"rms":0.93,"gap":19,"magType":"mww","type":"earthquake","title":"M 6.3 - 157km WNW of Tobelo, Indonesia"},"geometry":{"type":"Point","coordinates":[126.6503,2.1183,41]},"id":"usc000t8vq"}, 7 | {"type":"Feature","properties":{"mag":6.6,"place":"20km ESE of Punta de Burica, Panama","time":1418028892860,"updated":1418522521497,"tz":-300,"url":"http://earthquake.usgs.gov/earthquakes/eventpage/usc000t4iq","detail":"http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/usc000t4iq.geojson","felt":37,"cdi":5.2,"mmi":5.92,"alert":"green","status":"reviewed","tsunami":1,"sig":689,"net":"us","code":"c000t4iq","ids":",pt14342000,at00ng9a3m,usc000t4iq,gcmt20141208085452,","sources":",pt,at,us,gcmt,","types":",cap,dyfi,general-link,geoserve,impact-link,losspager,moment-tensor,nearby-cities,origin,phase-data,shakemap,tectonic-summary,","nst":null,"dmin":2.457,"rms":0.99,"gap":44,"magType":"mww","type":"earthquake","title":"M 6.6 - 20km ESE of Punta de Burica, Panama"},"geometry":{"type":"Point","coordinates":[-82.694,7.9691,20]},"id":"usc000t4iq"}],"bbox":[-118.6301667,2.1183,1.14,126.6503,44.5365,41]} -------------------------------------------------------------------------------- /tag.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: landing 3 | title: Tags 4 | description: Recent posts listed by tags. 5 | --- 6 | 7 |
    8 |
    9 |
    10 |
    11 | {% include site-tags.html %} 12 |
    13 |
    14 |
    15 |
    16 | 17 | {% for tag in site.tags %} 18 | {% capture inverted %}{{ forloop.index | modulo:2 }}{% endcapture %} 19 |
    20 |
    21 |
    22 |
    23 | 24 |

    25 | {{ tag.first | capitalize }} 26 |

    27 |
    28 |
    29 | 30 | 49 |
    50 |
    51 | {% endfor %} --------------------------------------------------------------------------------