├── .github └── FUNDING.yml ├── .gitignore ├── 404.html ├── Gemfile ├── Gemfile.lock ├── LICENSE.txt ├── README.md ├── _config.yml ├── _data └── home.yml ├── _includes ├── card_list.html ├── custom_head.html ├── date_and_social_share.html ├── head.html ├── horizontal_list.html ├── post_list.html ├── toggle_theme_button.html ├── toggle_theme_js.html └── vertical_list.html ├── _layouts ├── blog.html ├── default.html ├── home.html └── post.html ├── _posts ├── 2020-07-07-overview-post.md ├── 2020-07-08-language-tests.md ├── 2020-07-08-very-very-very-long-title-and-very-very-very-short-content.md ├── 2020-07-09-post-example-with-headings-and-toc.md ├── 2021-01-08-code.md └── 2021-03-04-soopr.md ├── _sass ├── list.scss ├── moonwalk.scss └── syntax.scss ├── _screenshots ├── lighthouse-report.png ├── moonwalk-mono.png ├── moonwalk.png └── twitter_card.png ├── about.md ├── assets ├── css │ └── main.scss └── images │ └── favicon │ ├── android-chrome-192x192.png │ ├── android-chrome-256x256.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── mstile-150x150.png │ ├── safari-pinned-tab.svg │ └── site.webmanifest ├── bin ├── bootstrap └── start ├── blog.html ├── favicon.ico ├── github_pages.md ├── images └── .gitkeep ├── index.md ├── logo.png ├── moonwalk.gemspec ├── moonwalk_on_windows.md └── robots.txt /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [abhinavs] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: ['https://www.buymeacoffee.com/abhinavs'] 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .bundle 3 | .jekyll-cache 4 | .sass-cache 5 | _site 6 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /404.html 3 | layout: post 4 | --- 5 | 6 | 19 | 20 |
21 |

404

22 | 23 |

Page not found :(

24 |

The requested page could not be found.

25 |
26 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | gemspec 5 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | PATH 2 | remote: . 3 | specs: 4 | moonwalk (0.1.3) 5 | jekyll (~> 4.2.0) 6 | jekyll-feed (~> 0.15.0) 7 | jekyll-soopr-seo-tag (~> 2.7.3) 8 | rouge (~> 3.23.0) 9 | webrick (~> 1.7) 10 | 11 | GEM 12 | remote: https://rubygems.org/ 13 | specs: 14 | addressable (2.8.1) 15 | public_suffix (>= 2.0.2, < 6.0) 16 | colorator (1.1.0) 17 | concurrent-ruby (1.1.10) 18 | em-websocket (0.5.3) 19 | eventmachine (>= 0.12.9) 20 | http_parser.rb (~> 0) 21 | eventmachine (1.2.7) 22 | ffi (1.15.5) 23 | forwardable-extended (2.6.0) 24 | http_parser.rb (0.8.0) 25 | i18n (1.12.0) 26 | concurrent-ruby (~> 1.0) 27 | jekyll (4.2.2) 28 | addressable (~> 2.4) 29 | colorator (~> 1.0) 30 | em-websocket (~> 0.5) 31 | i18n (~> 1.0) 32 | jekyll-sass-converter (~> 2.0) 33 | jekyll-watch (~> 2.0) 34 | kramdown (~> 2.3) 35 | kramdown-parser-gfm (~> 1.0) 36 | liquid (~> 4.0) 37 | mercenary (~> 0.4.0) 38 | pathutil (~> 0.9) 39 | rouge (~> 3.0) 40 | safe_yaml (~> 1.0) 41 | terminal-table (~> 2.0) 42 | jekyll-feed (0.15.1) 43 | jekyll (>= 3.7, < 5.0) 44 | jekyll-sass-converter (2.2.0) 45 | sassc (> 2.0.1, < 3.0) 46 | jekyll-soopr-seo-tag (2.7.3) 47 | jekyll (>= 3.8, < 5.0) 48 | jekyll-watch (2.2.1) 49 | listen (~> 3.0) 50 | kramdown (2.4.0) 51 | rexml 52 | kramdown-parser-gfm (1.1.0) 53 | kramdown (~> 2.0) 54 | liquid (4.0.3) 55 | listen (3.7.1) 56 | rb-fsevent (~> 0.10, >= 0.10.3) 57 | rb-inotify (~> 0.9, >= 0.9.10) 58 | mercenary (0.4.0) 59 | pathutil (0.16.2) 60 | forwardable-extended (~> 2.6) 61 | public_suffix (5.0.0) 62 | rb-fsevent (0.11.2) 63 | rb-inotify (0.10.1) 64 | ffi (~> 1.0) 65 | rexml (3.2.5) 66 | rouge (3.23.0) 67 | safe_yaml (1.0.5) 68 | sassc (2.4.0) 69 | ffi (~> 1.9) 70 | terminal-table (2.0.0) 71 | unicode-display_width (~> 1.1, >= 1.1.1) 72 | unicode-display_width (1.8.0) 73 | webrick (1.7.0) 74 | 75 | PLATFORMS 76 | ruby 77 | 78 | DEPENDENCIES 79 | moonwalk! 80 | 81 | BUNDLED WITH 82 | 2.2.21 83 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020 Abhinav Saxena 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 13 | all 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 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## moonwalk - a fast and minimalistic blog theme with clean dark mode 2 | 3 | 4 | 5 |

6 | 7 | TRY THE DEMO 8 |

9 | 10 | ## Features 11 | * Light & dark mode with theme switcher 12 | * Vertical list, horizontal list, card list 13 | * Landing page with navbar, footer, portfolio 14 | * Fast (very minimal CSS) - 100/100 on performance, accessibility, best practices and SEO, please see [Lighthouse Report](https://raw.githubusercontent.com/abhinavs/moonwalk/master/_screenshots/lighthouse-report.png) for more details 15 | * Responsive and mobile friendly 16 | * SEO optimized (uses [Jekyll Soopr SEO Tag](https://github.com/jekyll/jekyll-soopr-seo-tag)) 17 | * RSS feed (uses [Jekyll Feed](https://github.com/jekyll/jekyll-feed)) 18 | * Easy to extend 19 | * Fully compatible with [GitHub Pages](https://pages.github.com/) (see [GitHub Pages installation](#github-pages-installation)) 20 | * Auto-generated share images for social media (using [Soopr](https://www.soopr.co)) 21 | * Share & like buttons (using [Soopr](https://www.soopr.co)) 22 | 23 | 24 | #### Lighthouse 25 | 26 | 27 | 28 | ## Quick Installation 29 | 1. [Fork this repository](https://github.com/abhinavs/moonwalk/fork). 30 | 2. `cd moonwalk` 31 | 3. `bin/bootstrap` 32 | 4. [Optional] Sign up on Soopr, and add your `publish_token` in `_config.yml` file. 33 | 34 | If you are installing Moonwalk on Windows, please note that you might have to use Ruby 3.0.x instead of Ruby 3.1.x - you can see Windows specific installation instructions [here](https://github.com/abhinavs/moonwalk/blob/master/moonwalk_on_windows.md) 35 | 36 | ## Starting Server 37 | `bin/start` - development server will start at http://127.0.0.1:4000 38 | 39 | ## Deployment 40 | Moonwalk can be easily deployed on all the cloud providers (AWS etc.), and on static website hosting services like Netlify & Vercel. You can also use this button to do one click deploy 41 |
42 |
43 | [![Deploy with Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/abhinavs/moonwalk) 44 | 45 | If you want to use Moonwalk as a gem or use Github Pages, please see [this page](https://github.com/abhinavs/moonwalk/blob/master/github_pages.md) 46 | 47 | ## Customizing 48 | 49 | You can edit `_config.yml` file to customize your blog. You can change things such as the name of the blog, the author, the appearance of the theme (light, dark or auto), how dates are formatted, etc. Customizable fields should be straightforward to understand. Still, `_config.yml` contains some comments to help you understand what each field does. 50 | 51 | For further customization (e.g. layout, CSS) see the [official Jekyll's documentation](https://jekyllrb.com/docs/themes/#overriding-theme-defaults) on customizing gem-based themes. 52 | 53 | ### Customize the menu 54 | 55 | In order to add/edit/delete entries in the home page, you can copy the `home.yml` file inside `_data` folder. Through that file you can define the structure of the menu and add data for navbar, footer, portfolio or simply remove all of that and use simple blog layout. Take a look at the default configuration to get an idea of how it works and read on for a more comprehensive explaination. 56 | 57 | The `home.yml` file accepts the following fields: 58 | 59 | 1. Vertical list 60 | - `entries` define a new unordered list that will contain menu entries 61 | - each entry is marked by a `-` at the beginning of the line 62 | - each entry has the following attributes: 63 | - `title`, which defines the text to render for that menu entry 64 | - `url`, which can either be a URL or `false`. If it is `false`, the entry will be rendered as plain text; otherwise the entry will be rendered as a link pointing to the specified URL. Note that the URL can either be relative or absolute. 65 | - `post_list`, which can be `true` or `false`. If it is true, the entry will have all posts in the site as subentries. This is used to render your post list. 66 | - `entries`, yes, you can have entries inside entries. In this way you can create nested sublists! 67 | 2. Card list - cards are used to showcase portfolio projects. Please see `project_entries` in `_data/home.yml` file 68 | - each entry is marked by a `-` at the beginning of the line 69 | - each entry has the following attributes: 70 | - `title` defines the header of the card 71 | - `desc` is the body of the card 72 | - `url` is a relative or absolute link which this card can point to. 73 | - `highlight` in case you want to highlight something, keep the text short though 74 | 3. Horizontal list - moonwalk uses horizontal lists to create navbar and footer. Please see `navbar_entries` and `footer_entries` in `data/home.yml` file 75 | - each entry is marked by a `-` at the beginning of the line 76 | - each entry has the following attributes: 77 | - `title` defines the header of the card 78 | - `url` is a relative or absolute link which this card can point to. 79 | 80 | 81 | ### Pro tips 82 | 1. Moonwalk has 3 in-built layouts: 83 | - post - for content 84 | - blog - for listing blog posts 85 | - home - for landing page 86 | you can change your `index.md` file to use either home or blog layout. 87 | 88 | 2. It is extremely easy to tweak the color scheme. 89 | - for light mode, customize these css variables 90 | ```css 91 | html { 92 | --bg: #fff; 93 | --bg-secondary: #f3f4f6; 94 | --headings: #1e293b; 95 | --text: #374151; 96 | --text-secondary: #6b7280; 97 | --links: #6366f1; 98 | --highlight: #ffecb2; // light yellow 99 | --code-text: #9d174d; 100 | } 101 | ``` 102 | - for dark mode customize these css variables 103 | ```css 104 | @mixin dark-appearance { 105 | html, body { 106 | --headings: #74c0fc; 107 | --links: #91a7ff; 108 | --highlight: #41c7c7; 109 | --bg: #1f242a; 110 | --bg-secondary: #323945; 111 | --text: #adb5bd; 112 | --text-secondary: #9ca3af; 113 | --code-text: #91a7ff; 114 | }; 115 | } 116 | ``` 117 | 3. Sign up for free on [Soopr](https://www.soopr.co) and add your `publish_token` in `_config.yml` file - with this, each page gets short URL, like button and auto generated share image for social media. 118 | 119 | 120 | 121 | ## Contributing 122 | 123 | Bug reports and pull requests are welcome on GitHub at https://github.com/abhinavs/moonwalk. 124 | 125 | ## Development 126 | 127 | To set up your environment to develop this theme, run `bundle install`. 128 | 129 | Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal. 130 | 131 | When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled. 132 | To add a custom directory to your theme-gem, please edit the regexp in `moonwalk.gemspec` accordingly. 133 | 134 | ## Acknowledgement 135 | This theme's original base is [no style please!](https://github.com/riggraz/no-style-please) theme created by [Riccardo Graziosi](https://riggraz.dev/) - many thanks to him for creating a wonderful theme with nearly no css. 136 | 137 | ## License 138 | 139 | The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). 140 | 141 | ## Other Projects 142 | If you like Moonwalk, do check out my other projects 143 | * [cookie](https://github.com/abhinavs/cookie) - a free landing website boilerplate using Jekyll and Tailwind CSS 144 | * [scoop](https://github.com/abhinavs/scoop) - a Sinatra boilerplate project using Corneal, ActiveRecord, Capistrano, Puma & Nginx 145 | * [soopr](https://www.soopr.co) - a tool that supports you in content marketing 146 | * [apicagent](https://www.apicagent.com) - a FREE API that extracts device details from user-agent string 147 | * [pincodr](https://pincodr.apiclabs.com) - a FREE API for Indian pincodes 148 | * [humangous](https://www.humangous.co) - create public and private 'working with you' guides 149 | * [blockr](https://www.abhinav.co/blockr) - a CLI tool to help you easily block and unblock websites 150 | * [microrequests](https://www.abhinav.co/microrequests) - a Python library to help you consume microservice efficiently 151 | 152 | ✨⚡You can read more about me on my [blog](https://www.abhinav.co/about/) or follow me on Twitter - [@abhinav](https://twitter.com/abhinav) 153 | 154 | ✨⚡If you like my work, you can [buy me a coffee](https://buymeacoffee.com/abhinavs) 155 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Moonwalk 2 | author: Abhinav Saxena 3 | url: https://www.abhinavsaxena.com/moonwalk # root address of the site 4 | description: > # description of the site (multiple lines allowed) 5 | Moonwalk is a fast and elegant Jekyll theme with a clean dark mode. It comes with horizontal list (for navbar and footer), card list (for portfolio), and a generic vertical list. It is very easy to modify in case you want to build over it - please see _layouts/home.html to do that. 6 | 7 | permalink: /:slug 8 | 9 | favicon: "./logo.png" # relative path to site's favicon 10 | 11 | twitter: 12 | username: abhinav # update or delete this 13 | card: summary_large_image 14 | 15 | #theme: moonwalk # if you are using GitHub Pages, change it to remote_theme: abhinavs/moonwalk 16 | remote_theme: abhinavs/moonwalk 17 | 18 | theme_config: 19 | appearance: "dark" # can be "light", "dark" or "auto" 20 | appearance_toggle: true # if appearance can be switched by user 21 | back_home_text: "home.." # customize text for homepage link in post layout 22 | date_format: "%Y-%m-%d" # customize how date is formatted 23 | show_description: true # show blog description 24 | show_navbar: true # show horizontal navbar 25 | show_footer: true # show footer links in home page,add in _data/home.yml 26 | show_copyright: true # show copyright notice in footer 27 | # following keys are using to create home layout 28 | show_projects: true # show projects as cards, add in _data/home.yml 29 | show_blog: true # show blog posts added in _posts 30 | show_old_projects: true # show old projects as cards, add in _data/home.yml 31 | show_misc_list: false # show generic vertical list for misc details, add _data/home.yml 32 | show_reading_time: true # show number of words and reading time in the blog posts 33 | show_tags: true # show tags in a blog posts 34 | # options for "home" page 35 | home: 36 | title_projects: Portfolio 37 | title_misc_list: Details 38 | title_blog: Blog 39 | title_old_projects: Old Projects 40 | 41 | soopr: 42 | publish_token: "" # sign up at https://www.soopr.co to get your publish token and personalize share and reaction options 43 | 44 | highlighter: rouge 45 | 46 | sass: 47 | style: :compressed 48 | 49 | plugins: 50 | - jekyll-feed 51 | - jekyll-soopr-seo-tag 52 | -------------------------------------------------------------------------------- /_data/home.yml: -------------------------------------------------------------------------------- 1 | navbar_entries: 2 | - title: about 3 | url: about 4 | 5 | - title: blog 6 | url: blog 7 | 8 | - title: website 9 | url: https://www.abhinav.co 10 | 11 | project_entries: 12 | - title: Project 1 13 | url: overview-post 14 | desc: This is an example project, configured in _data/home.yml 15 | 16 | - title: Project 2 17 | url: overview-post 18 | desc: Projects are shown in card layout 19 | 20 | - title: Project 3 21 | url: overview-post 22 | desc: You can control visibility from _config.yml file 23 | 24 | - title: Project 4 25 | url: overview-post 26 | desc: This project uses highlight markup, configured in _data/home.yml 27 | highlight: WIP 28 | 29 | - title: Project 5 30 | url: overview-post 31 | desc: Moonwalk also has horizontal list (used in header and footer) 32 | highlight: WIP 33 | 34 | - title: Project 6 35 | url: overview-post 36 | desc: It also has a scalable vertical list (in case you need it) 37 | 38 | old_project_entries: 39 | - title: Soopr 40 | url: https://www.soopr.co 41 | desc: Delight your readers - add beautiful share and like buttons easily to your websites 42 | highlight: NEW 43 | 44 | - title: Cookie 45 | url: https://github.com/abhinavs/cookie 46 | desc: An open source landing website with supporting pages and integrated blog 47 | 48 | - title: Moonwalk 49 | url: https://github.com/abhinavs/moonwalk 50 | desc: A fast and minimalist Jekyll blog theme with clean dark mode 51 | 52 | - title: Humangous 53 | url: https://www.humangous.co 54 | desc: The better people know you, the better they collaborate 55 | 56 | footer_entries: 57 | - title: abhinav's homepage 58 | url: https://www.abhinav.co 59 | 60 | - title: twitter 61 | url: https://twitter.com/abhinav 62 | 63 | - title: github 64 | url: https://github.com/abhinavs 65 | 66 | - title: feed 67 | url: feed.xml 68 | 69 | misc_entries: 70 | - title: this is an example vertical list 71 | url: false 72 | 73 | - title: you can show or hide using a boolean flag in _config.yml 74 | url: false 75 | 76 | - title: and you can add data in _data/home.yml 77 | url: false 78 | 79 | - title: Blog posts 80 | post_list: true 81 | url: false 82 | 83 | - title: moonwalk on the Internet 84 | url: false 85 | entries: 86 | - title: on Github 87 | url: https://github.com/abhinavs/moonwalk 88 | 89 | - title: originally built for abhinav's homepage 90 | url: https://www.abhinav.co 91 | 92 | - title: this list is scalable and can be nested 93 | url: false 94 | entries: 95 | - title: this is nested inside a nested list 96 | url: false 97 | 98 | - title: it is easy to use, see _data/home.yml to see how to configure it. 99 | url: false 100 | 101 | 102 | -------------------------------------------------------------------------------- /_includes/card_list.html: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /_includes/custom_head.html: -------------------------------------------------------------------------------- 1 | {% comment %} 2 | Placeholder to allow defining custom head. You can put favicons and other custom header fields here 3 | {% endcomment %} 4 | -------------------------------------------------------------------------------- /_includes/date_and_social_share.html: -------------------------------------------------------------------------------- 1 |

2 | {% if page.author %} 3 | {{ page.author }} / 4 | {% endif %} 5 | {% if page.date %} 6 | {{ page.date | date: "%B %Y"}} 7 | {% endif %} 8 | 9 | {% if site.theme_config.show_reading_time == true %} 10 | {% capture words %} 11 | {{ content | number_of_words | minus: 180 }} 12 | {% endcapture %} 13 | {% unless words contains '-' %} 14 | {{ words | strip | prepend: '(' | append: ' Words, ' }} 15 | {{ words | plus: 180 | divided_by: 180 | append: ' Minutes)' }} 16 | {% endunless %} 17 | {% endif %} 18 |

19 | 20 |
23 |
24 | 25 | {% if site.theme_config.show_tags == true %} 26 |
27 | {% for tag in page.tags %} 28 | {{ tag }} 29 | {% endfor %} 30 |
31 | {% endif %} 32 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {% if page.title %} 8 | {{ page.title }} 9 | {% else %} 10 | {{ site.title }} 11 | {% endif %} 12 | 13 | 14 | {% seo title=false %} 15 | {% feed_meta %} 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {% if site.theme_config.appearance_toggle %} 31 | {% include toggle_theme_js.html %} 32 | {% endif %} 33 | 34 | {%- include custom_head.html -%} 35 | 36 | -------------------------------------------------------------------------------- /_includes/horizontal_list.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /_includes/post_list.html: -------------------------------------------------------------------------------- 1 | {% if site.posts.size > 0 %} 2 | 12 | {% endif %} 13 | -------------------------------------------------------------------------------- /_includes/toggle_theme_button.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /_includes/toggle_theme_js.html: -------------------------------------------------------------------------------- 1 | 31 | 32 | -------------------------------------------------------------------------------- /_includes/vertical_list.html: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /_layouts/blog.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {{ site.theme_config.back_home_text }} 5 | 6 |
7 |

{{ site.title }}

8 |
9 | 10 | {% include post_list.html %} 11 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {%- include head.html -%} 4 | 5 |
6 |
7 | {{ content }} 8 | {% if site.theme_config.appearance_toggle %} 9 | {% include toggle_theme_button.html %} 10 | {% endif %} 11 |
12 | {%- if site.theme_config.show_copyright == true -%} 13 | © {{ "now" | date: "%Y" }} {{site.author}} 14 |   15 | • 16 |   17 | {%- endif -%} 18 | {%- if site.soopr -%} 19 | Powered by Soopr 20 |   21 | • 22 |   23 | {%- endif -%} 24 | Theme  Moonwalk 25 |
26 |
27 |
28 | 29 | {%- if site.soopr -%} 30 | {%- if site.soopr.publish_token and jekyll.environment == "production" -%} 31 | 32 | {%- else -%} 33 | 34 | {%- endif -%} 35 | {%- endif -%} 36 | 37 | 38 | -------------------------------------------------------------------------------- /_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 | {% if site.theme_config.show_navbar == true %} 7 | {% include horizontal_list.html collection=site.data.home.navbar_entries %} 8 |
9 | {% endif %} 10 | 11 |

{{ site.title }}

12 | {% if site.theme_config.show_description == true %} 13 |

{{ site.description }}

14 | {% endif %} 15 |
16 | 17 | {{ content }} 18 | 19 | {% if site.theme_config.show_projects == true %} 20 |

{{ site.theme_config.home.title_projects }}

21 | {% include card_list.html collection=site.data.home.project_entries %} 22 | {% endif %} 23 | 24 | {% if site.theme_config.show_misc_list == true %} 25 |

{{ site.theme_config.home.title_misc_list }}

26 | {% include vertical_list.html collection=site.data.home.misc_entries %} 27 | {% endif %} 28 | 29 | {% if site.theme_config.show_blog == true %} 30 |

{{ site.theme_config.home.title_blog }}

31 | {% include post_list.html %} 32 | {% endif %} 33 | 34 | {% if site.theme_config.show_old_projects == true %} 35 |

{{ site.theme_config.home.title_old_projects }}

36 | {% include card_list.html collection=site.data.home.old_project_entries %} 37 | {% endif %} 38 | 39 | 40 | {% if site.theme_config.show_footer == true %} 41 | 45 | {% endif %} 46 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {{ site.theme_config.back_home_text }} 6 |

{{ page.title }}

7 | {% include date_and_social_share.html %} 8 | {{ content }} 9 | -------------------------------------------------------------------------------- /_posts/2020-07-07-overview-post.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | author: Abhinav Saxena 4 | tags: [overview, moonwalk] 5 | --- 6 | 7 | Lorem ipsum[^1] dolor sit amet, consectetur adipiscing elit. Pellentesque vel lacinia neque. Praesent nulla quam, ullamcorper in sollicitudin ac, molestie sed justo. Cras aliquam, sapien id consectetur accumsan, augue magna faucibus ex, ut ultricies turpis tortor vel ante. In at rutrum tellus. 8 | 9 | # Sample heading 1 10 | ## Sample heading 2 11 | ### Sample heading 3 12 | #### Sample heading 4 13 | ##### Sample heading 5 14 | ###### Sample heading 6 15 | 16 | Mauris viverra dictum ultricies. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Etiam id nisl ut lorem gravida euismod. 17 | 18 | ## Lists 19 | 20 | Unordered: 21 | 22 | - Fusce non velit cursus ligula mattis convallis vel at metus[^2]. 23 | - Sed pharetra tellus massa, non elementum eros vulputate non. 24 | - Suspendisse potenti. 25 | 26 | Ordered: 27 | 28 | 1. Quisque arcu felis, laoreet vel accumsan sit amet, fermentum at nunc. 29 | 2. Sed massa quam, auctor in eros quis, porttitor tincidunt orci. 30 | 3. Nulla convallis id sapien ornare viverra. 31 | 4. Nam a est eget ligula pellentesque posuere. 32 | 33 | ## Blockquote 34 | 35 | The following is a blockquote: 36 | 37 | > Suspendisse tempus dolor nec risus sodales posuere. Proin dui dui, mollis a consectetur molestie, lobortis vitae tellus. 38 | 39 | ## Thematic breaks (
) 40 | 41 | Mauris viverra dictum ultricies[^3]. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Etiam id nisl ut lorem gravida euismod. **You can put some text inside the horizontal rule like so.** 42 | 43 | --- 44 | {: data-content="hr with text"} 45 | 46 | Mauris viverra dictum ultricies. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Etiam id nisl ut lorem gravida euismod. **Or you can just have an clean horizontal rule.** 47 | 48 | --- 49 | 50 | Mauris viverra dictum ultricies. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Etiam id nisl ut lorem gravida euismod. Or you can just have an clean horizontal rule. 51 | 52 | ## Code 53 | 54 | Now some code: 55 | 56 | ``` 57 | const ultimateTruth = 'follow middlepath'; 58 | console.log(ultimateTruth); 59 | ``` 60 | 61 | And here is some `inline code`! 62 | 63 | ## Tables 64 | 65 | Now a table: 66 | 67 | | Tables | Are | Cool | 68 | | ------------- |:-------------:| -----:| 69 | | col 3 is | right-aligned | $1600 | 70 | | col 2 is | centered | $12 | 71 | | zebra stripes | are neat | $1 | 72 | 73 | ## Images 74 | 75 | ![theme logo](http://www.abhinavsaxena.com/images/abhinav.jpeg) 76 | 77 | This is an image[^4] 78 | 79 | --- 80 | {: data-content="footnotes"} 81 | 82 | [^1]: this is a footnote. You should reach here if you click on the corresponding superscript number. 83 | [^2]: hey there, don't forget to read all the footnotes! 84 | [^3]: this is another footnote. 85 | [^4]: this is a very very long footnote to test if a very very long footnote brings some problems or not; hope that there are no problems but you know sometimes problems arise from nowhere. 86 | -------------------------------------------------------------------------------- /_posts/2020-07-08-language-tests.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Language Tests" 4 | --- 5 | 6 | Note: Text is from [moving](https://github.com/huangyz0918/moving), which is another good Jekyll theme. 7 | 8 | ### 1. 日本語テスト 9 | 10 | This is a Japanese test post to show you how japanese is displayed. 11 | 12 | 私は昨日ついにその助力家というのの上よりするたなけれ。 13 | 最も今をお話団はちょうどこの前後なかろでくらいに困りがいるたをは帰着考えたなかって、そうにもするでうたらない。 14 | がたを知っないはずも同時に九月をいよいよたありた。 15 | 16 | もっと槙さんにぼんやり金少し説明にえた自分大した人私か影響にというお関係たうませないが、この次第も私か兄具合に使うて、槙さんののに当人のあなたにさぞご意味と行くて私個人が小尊敬を聴いように同時に同反抗に集っだうて、いよいよまず相当へあっうからいだ事をしでなけれ。 17 | 18 | > それでそれでもご時日をしはずはたったいやと突き抜けるますて、その元がは行ったてという獄を尽すていけですた。 19 | 20 | この中道具の日その学校はあなたごろがすまなりかとネルソンさんの考えるですん、辺の事実ないというご盲従ありたですと、爺さんのためが薬缶が結果までの箸の当時してならて、多少の十月にためからそういう上からとにかくしましないと触れべきものたで、ないうですと多少お人達したのでたた。 21 | 22 | From [すぐ使えるダミーテキスト - 日本語 Lorem ipsum.](http://lipsum.sugutsukaeru.jp/index.cgi) 23 | 24 | 25 | ### 2. 繁体中文测试 26 | 27 | This is a chinese test post to show you how chinese is displayed. 28 | 29 | 善我王上魚、產生資西員合兒臉趣論。畫衣生這著爸毛親可時,安程幾?合學作。觀經而作建。都非子作這!法如言子你關!手師也。 30 | 31 | 以也座論頭室業放。要車時地變此親不老高小是統習直麼調未,行年香一? 32 | 33 | 就竟在,是我童示讓利分和異種百路關母信過明驗有個歷洋中前合著區亮風值新底車有正結,進快保的行戰從:弟除文辦條國備當來際年每小腳識世可的的外的廣下歌洲保輪市果底天影;全氣具些回童但倒影發狀在示,數上學大法很,如要我……月品大供這起服滿老?應學傳者國:山式排只不之然清同關;細車是!停屋常間又,資畫領生,相們制在?公別的人寫教資夠。資再我我!只臉夫藝量不路政吃息緊回力之;兒足灣電空時局我怎初安。意今一子區首者微陸現際安除發連由子由而走學體區園我車當會,經時取頭,嚴了新科同?很夫營動通打,出和導一樂,查旅他。坐是收外子發物北看蘭戰坐車身做可來。道就學務。 34 | 35 | 國新故。 36 | 37 | > 工步他始能詩的,裝進分星海演意學值例道……於財型目古香亮自和這乎?化經溫詩。只賽嚴大一主價世哥受的沒有中年即病行金拉麼河。主小路了種就小為廣不? 38 | 39 | From [亂數假文產生器 - Chinese Lorem Ipsum.](http://www.richyli.com/tool/loremipsum/) 40 | 41 | 42 | 43 | ### 3. 简体中文测试 44 | 45 | 效育声去本义然空,各值太法心想,场强实地。 题铁习点儿表管少间千,只何政亲织文意部,千影画派证男须。 手反取长风治增非等直难群,连取及天他己事头级,影数弦适把气快目人。 专议以省通引而千个,格则口段度样水热马,地教少务改磨。 包思外心半院应她算斯,市外会快记路又火学,劳如肃它准众丧边。 46 | 47 | > 团算部住县单总边素格军所,合音府教看和广光采率位转,位用品根确针百。 证其标元角工方海接交他,论象切万世认一响义,治然身本风弦带题。 向我次路持加北,她不反心。 说总元军例市决,现始即算证养,规走还壳。 48 | 49 | 因林可相儿应满军,热影省条律因资再,整肃赤心将届。 局广写两量备验还,南教事争工民的,备进研上布。 素身电活非直,速这区交示从,百层达。 资量那毛什京身,白这快。 半打容三手开常价或,手严量般象式效,名可重芽门适。 来设什一我么,光界美么或,住身式准。 造酸改表委验众办地百养,商物战众本列听度名院,制压录丽快与千机内。 住需当四议决得命南然照按民置,当住命形金决否矿单外。 气象理离开新集增际,三划方工义很年关,拉许准孝口。 构片出干计由备美打养,持育总指承入无己。 50 | 51 | From [假文生成器, lorem ipsum Chinese](http://www.cancms.com/content/dummytext) -------------------------------------------------------------------------------- /_posts/2020-07-08-very-very-very-long-title-and-very-very-very-short-content.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | --- 4 | 5 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vel lacinia neque. Praesent nulla quam, ullamcorper in sollicitudin ac, molestie sed justo. Cras aliquam, sapien id consectetur accumsan, augue magna faucibus ex, ut ultricies turpis tortor vel ante. In at rutrum tellus. Nullam vestibulum metus eu purus malesuada, volutpat mattis leo facilisis. -------------------------------------------------------------------------------- /_posts/2020-07-09-post-example-with-headings-and-toc.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | --- 4 | 5 | Mauris viverra dictum ultricies. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Nunc a egestas tortor, sed feugiat leo. 6 | 7 | ## Table of contents 8 | - [Table of contents](#table-of-contents) 9 | - [The start](#the-start) 10 | - [The middle](#the-middle) 11 | - [The end](#the-end) 12 | 13 | Mauris viverra dictum ultricies. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Nunc a egestas tortor, sed feugiat leo. Vestibulum porta tincidunt tellus, vitae ornare tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed nunc neque, tempor in iaculis non, faucibus et metus. Etiam id nisl ut lorem gravida euismod. 14 | 15 | ## [The start](#the-start) 16 | 17 | Fusce non velit cursus ligula mattis convallis vel at metus. Sed pharetra tellus massa, non elementum eros vulputate non. Suspendisse potenti. Quisque arcu felis, laoreet vel accumsan sit amet, fermentum at nunc. Sed massa quam, auctor in eros quis, porttitor tincidunt orci. Nulla convallis id sapien ornare viverra. Cras nec est lacinia ligula porta tincidunt. Nam a est eget ligula pellentesque posuere. Maecenas quis enim ac risus accumsan scelerisque. Aliquam vitae libero sapien. Etiam convallis, metus nec suscipit condimentum, quam massa congue velit, sit amet sollicitudin nisi tortor a lectus. Cras a arcu enim. Suspendisse hendrerit euismod est ac gravida. Donec vitae elit tristique, suscipit eros at, aliquam augue. In ac faucibus dui. Sed tempor lacus tristique elit sagittis, vitae tempor massa convallis. 18 | 19 | ## [The middle](#the-middle) 20 | 21 | Proin quis velit et eros auctor laoreet. Aenean eget nibh odio. Suspendisse mollis enim pretium, fermentum urna vitae, egestas purus. Donec convallis tincidunt purus, scelerisque fermentum eros sagittis vel. Aliquam ac aliquet risus, tempus iaculis est. Fusce molestie mauris non interdum hendrerit. Curabitur ullamcorper, eros vitae interdum volutpat, lacus magna lacinia turpis, at accumsan dui tortor vel lectus. Aenean risus massa, semper non lectus rutrum, facilisis imperdiet mi. Praesent sed quam quis purus auctor ornare et sed augue. Vestibulum non quam quis ligula luctus placerat sed sit amet erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce auctor, sem eu volutpat dignissim, turpis nibh malesuada arcu, in consequat elit mauris quis sem. Nam tristique sit amet enim vel accumsan. Sed id nibh commodo, dictum sem id, semper quam. 22 | 23 | ## The end 24 | 25 | Donec ex lectus, tempus non lacinia quis, pretium non ipsum. Praesent est nunc, rutrum vel tellus eu, tristique laoreet purus. In rutrum orci sit amet ex ornare, sit amet finibus lacus laoreet. Etiam ac facilisis purus, eget porttitor odio. Suspendisse tempus dolor nec risus sodales posuere. Proin dui dui, mollis a consectetur molestie, lobortis vitae tellus. Vivamus at purus sed urna sollicitudin mattis. Mauris lacinia libero in lobortis pulvinar. Nullam sit amet condimentum justo. Donec orci justo, pharetra ut dolor non, interdum finibus orci. Proin vitae ante a dui sodales commodo ac id elit. Nunc vel accumsan nunc, sit amet congue nunc. Aliquam in lacinia velit. Integer lobortis luctus eros, in fermentum metus aliquet a. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. 26 | 27 | -------------------------------------------------------------------------------- /_posts/2021-01-08-code.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | --- 4 | 5 | # Language Test 6 | 7 | ## Python 8 | ```python 9 | import microrequests 10 | 11 | mr = microrequests.init() 12 | # mr is requests' session object and you can use it in similar manner 13 | res = mr.get("http://httpbin.org/get") 14 | print(res.text) 15 | ``` 16 | 17 | ## Ruby 18 | ```ruby 19 | require 'gmail' 20 | require 'time' 21 | require 'yaml' 22 | require 'erb' 23 | 24 | if ARGV.length != 2 25 | puts "Syntax: #{__FILE__} gmail-username gmail-password" 26 | exit 27 | end 28 | 29 | config = YAML.load_file("#{File.dirname(__FILE__)}/config.yaml") 30 | body = ERB.new(config['body']) 31 | 32 | gmail = Gmail.connect(ARGV[0], ARGV[1]) 33 | 34 | # variable 'name' is important given it is used in body as well 35 | for name, email_id in config['to'] do 36 | puts "sending to #{email_id}" 37 | email = gmail.compose do 38 | to email_id 39 | from config['from'] 40 | subject config['subject'] 41 | body body.result(binding) 42 | end 43 | email.deliver! 44 | end 45 | 46 | gmail.logout 47 | ``` 48 | 49 | ## Javascript 50 | ```javascript 51 | const path = require('path'); 52 | const { merge } = require('webpack-merge'); 53 | const common = require('./webpack.common.js'); 54 | 55 | module.exports = merge(common, { 56 | mode: 'development', 57 | devtool: 'inline-source-map', 58 | devServer: { 59 | writeToDisk: true, 60 | contentBase: path.join(__dirname, 'dist'), 61 | publicPath: path.join(__dirname, 'dist'), 62 | compress: true, 63 | port: 8000, 64 | }, 65 | }); 66 | ``` 67 | 68 | ## Elixir 69 | ```elixir 70 | defmodule MyAppWeb.BearerAuth do 71 | 72 | import Plug.Conn 73 | alias MyApp.Account 74 | 75 | def init(options) do 76 | options 77 | end 78 | 79 | def call(conn, _options) do 80 | case get_bearer_auth_token(conn) do 81 | nil -> 82 | conn |> unauthorized() 83 | :error -> 84 | conn |> unauthorized() 85 | auth_token -> 86 | account = 87 | Account.get_from_token(auth_token) 88 | if account do 89 | assign(conn, :current_account, account) 90 | else 91 | conn |> unauthorized() 92 | end 93 | end 94 | end 95 | 96 | defp get_bearer_auth_token(conn) do 97 | with ["Bearer " <> auth_token] <- get_req_header(conn, "authorization") do 98 | auth_token 99 | else 100 | _ -> :error 101 | end 102 | end 103 | 104 | defp unauthorized(conn) do 105 | conn 106 | |> resp(401, "Unauthorized") 107 | |> halt() 108 | end 109 | end 110 | 111 | ``` 112 | 113 | ## CSS 114 | ```css 115 | .highlight, pre code, blockquote { 116 | border-radius: 0.5em; 117 | } 118 | blockquote { 119 | background-color: var(--bg-secondary); 120 | border: 1px var(--border) solid; 121 | } 122 | ``` 123 | -------------------------------------------------------------------------------- /_posts/2021-03-04-soopr.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | tags: [soopr, config] 4 | --- 5 | 6 | [Soopr][soopr-website] is the easiest way for you to add share & reaction buttons to your blog and website, integrate an URL shortener and simple to understand analytics service. Soopr lets you manage all of these using a powerful dashboard. 7 | 8 | Moonwalk uses Soopr for share and like buttons and it is already integrated. By default, Moonwalk shows `circular` Twitter, Facebook and Copy buttons in `base` size. To add `like` button, please signup for free on [Soopr][soopr-website] 9 | 10 | Once you have signed up on Soopr, get a publish token for your website and edit `_config.yml` file and add it under `soopr` key and restart the server. 11 | ```yml 12 | soopr: 13 | publish-token: "ADD_YOUR_PUBLISH_TOKEN_HERE" 14 | ``` 15 | 16 | Check out the [Soopr Website][soopr-website] for more info on how to get the most out of Soopr. 17 | 18 | [soopr-website]: https://www.soopr.co 19 | -------------------------------------------------------------------------------- /_sass/list.scss: -------------------------------------------------------------------------------- 1 | ul.horizontal-list { 2 | display: flex; 3 | //justify-content: space-between; 4 | margin-top: 0em; 5 | margin-left: -40px; 6 | flex-wrap: wrap; 7 | 8 | li { 9 | display:inline; 10 | margin-right: 1em; 11 | } 12 | 13 | li a { 14 | text-decoration: none; 15 | font-weight: normal 16 | } 17 | 18 | } 19 | 20 | .card { 21 | padding: 1em; 22 | border: 1px var(--text) solid; 23 | width: 11em; 24 | height: auto; 25 | text-align: center; 26 | font-size: 1em; 27 | align-items: center; 28 | background-color: var(--bg-secondary); 29 | margin-bottom: 0.8em; 30 | border-radius: 0.5em; 31 | 32 | .header { 33 | color: var(--links); 34 | } 35 | 36 | .body { 37 | font-size: 0.8em; 38 | } 39 | 40 | hr { 41 | margin: 0.5em 0; 42 | } 43 | 44 | } 45 | 46 | /* Responsive cards - one column layout on small screens */ 47 | @media screen and (max-width: 600px) { 48 | ul.horizontal-list li.card { 49 | width: 100%; 50 | display: block; 51 | margin-bottom: 1em; 52 | margin-left: 1em; 53 | a, .header { 54 | font-size: 1em; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /_sass/moonwalk.scss: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap'); 2 | @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap'); 3 | 4 | html { height: 100%; } 5 | 6 | body { 7 | font-family: "Inter", -apple-system, "avenir next", avenir, roboto, noto, ubuntu, "helvetica neue", helvetica, sans-serif; 8 | font-size: 1.0rem; 9 | line-height: 2; 10 | margin: 0; 11 | min-height: 100%; 12 | } 13 | pre, code { 14 | font-family: "Roboto Mono", "Courier New", monospace; 15 | font-size: 0.9rem; 16 | } 17 | 18 | h2, h3, h4, h5 { margin-top: 1.5em; } 19 | 20 | hr { margin: 1em 0; } 21 | 22 | hr.page-break { 23 | text-align: center; 24 | border: 0; 25 | 26 | &:before { content: '-----' } 27 | &:after { content: attr(data-content) '-----' } 28 | } 29 | 30 | p { margin: 1em 0; } 31 | 32 | li { margin: 0.4em 0; } 33 | 34 | .w { 35 | max-width: 720px; 36 | margin: 0 auto; 37 | padding: 4em 2em; 38 | } 39 | 40 | table, th, td { 41 | width: 100%; 42 | border: thin solid black; 43 | border-collapse: collapse; 44 | padding: 0.4em; 45 | } 46 | 47 | div.highlighter-rouge pre code, pre code.highlighter-rouge { 48 | display: block; 49 | overflow-x: auto; 50 | padding: 1em; 51 | } 52 | 53 | blockquote { 54 | font-style: italic; 55 | border: thin solid black; 56 | padding: 1em; 57 | 58 | p { margin: 0; } 59 | } 60 | 61 | img { 62 | max-width: 100%; 63 | display: block; 64 | margin: 0 auto; 65 | } 66 | @mixin light-appearance { 67 | html, body { 68 | --bg: #FFF; 69 | --bg-secondary: #f3f4f6; 70 | --headings: #1e293b; 71 | --text: #374151; 72 | --text-secondary: #6b7280; 73 | --links: #6366f1; 74 | --highlight: #FFECB2; // light yellow 75 | --code-text: #9D174D; 76 | --share-text: #999; 77 | } 78 | } 79 | // -------------- THEME SWITCHER -------------- // 80 | @mixin dark-appearance { 81 | html, body { 82 | --headings: #74c0fc; 83 | --links: #91A7FF; 84 | --highlight: #41C7C7; 85 | --bg: #1f242A; 86 | --bg-secondary: #323945; 87 | --text: #adb5bd; 88 | --text-secondary: #9CA3AF; 89 | --code-text: #91A7FF; 90 | --share-text: #C4C4C4; 91 | }; 92 | } 93 | 94 | html[data-theme="dark"] { @include dark-appearance; } 95 | html[data-theme="light"] { @include light-appearance; } 96 | 97 | @media (prefers-color-scheme: dark) { 98 | body[data-theme="auto"] { @include dark-appearance; } 99 | } 100 | @media (prefers-color-scheme: light) { 101 | body[data-theme="auto"] { @include light-appearance; } 102 | } 103 | 104 | // -------------------------------------------- // 105 | 106 | html, body { 107 | background-color: var(--bg); 108 | color: var(--text); 109 | } 110 | h1, h2, h3, h4, h5, h6 { 111 | color: var(--headings); 112 | } 113 | p, strong, b, em, small, li, hr, table, figcaption { 114 | color: var(--text); 115 | } 116 | .highlight, pre code, blockquote { 117 | border-radius: 0.5em; 118 | } 119 | blockquote { 120 | background-color: var(--bg-secondary); 121 | border: 1px var(--border) solid; 122 | } 123 | a { 124 | color: var(--links); 125 | } 126 | *:target { background-color: var(--bg-secondary); } 127 | 128 | html.transition, 129 | html.transition *, 130 | html.transition *:before, 131 | html.transition *:after { 132 | transition: all 250ms !important; 133 | transition-delay: 0 !important; 134 | } 135 | 136 | .theme-toggle { 137 | color: var(--text); 138 | background-color: transparent; 139 | padding: 4px; 140 | cursor: pointer; 141 | margin: 1em; 142 | position: fixed; 143 | right: 0; 144 | top: 0; 145 | border: 2px transparent solid; 146 | outline: none; 147 | } 148 | 149 | .theme-toggle:hover { 150 | color: var(--links); 151 | outline: none; 152 | } 153 | .theme-toggle:focus { 154 | outline: none; 155 | } 156 | .dashed { 157 | border-top: 1px var(--text) dashed; 158 | margin: 0.5em 0; 159 | } 160 | mark { 161 | padding: 0.4em; 162 | background-color: var(--highlight); 163 | font-size: 0.6em; 164 | letter-spacing: 1px; 165 | } 166 | 167 | .post-date { 168 | color: var(--text-secondary); 169 | margin-top: 1rem; 170 | font-size: 0.7em; 171 | font-family: "Roboto Mono", "Courier New", monospace; 172 | } 173 | .home-date { 174 | font-family: "Roboto Mono", "Courier New", monospace; 175 | } 176 | .post-list-item a { 177 | text-decoration: none; 178 | } 179 | .text-bold { 180 | font-weight: bold; 181 | } 182 | .text-upcase { 183 | text-transform: uppercase; 184 | letter-spacing: 1px; 185 | } 186 | p code, li code { 187 | background-color: var(--bg-secondary); 188 | padding: 0.2rem; 189 | color: var(--code-text); 190 | font-weight: bold; 191 | } 192 | .post-title { 193 | margin-bottom:-1.5rem; 194 | } 195 | .project-title { 196 | margin-bottom: 0.8rem; 197 | } 198 | .credits { 199 | font-size: 0.8em; 200 | color: var(--text); 201 | margin: 8em auto -4em auto; 202 | text-align: center; 203 | a { 204 | color: var(--text); 205 | text-decoration: none; 206 | font-weight: bold; 207 | } 208 | a:hover { 209 | color: var(--links); 210 | } 211 | } 212 | .tag { 213 | font-family: "Roboto Mono", "Courier New", monospace; 214 | color: var(--text-secondary); 215 | padding: 0.4em 1em; 216 | margin-right: 0.5em; 217 | border-radius: 1em; 218 | background-color: var(--bg-secondary); 219 | font-size: 0.7em; 220 | font-weight: bold; 221 | text-transform: lowercase; 222 | //border: 1px solid var(--text-secondary); 223 | } 224 | -------------------------------------------------------------------------------- /_sass/syntax.scss: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #515151 } 2 | /*.highlight { background: #2d2d2d; color: #f2f0ec }*/ 3 | .highlight { background: #1A1F35; color: #f2f0ec } 4 | .highlight .c { color: #747369 } /* Comment */ 5 | .highlight .err { color: #f2777a } /* Error */ 6 | .highlight .k { color: #cc99cc } /* Keyword */ 7 | .highlight .l { color: #f99157 } /* Literal */ 8 | .highlight .n { color: #f2f0ec } /* Name */ 9 | .highlight .o { color: #66cccc } /* Operator */ 10 | .highlight .p { color: #f2f0ec } /* Punctuation */ 11 | .highlight .ch { color: #747369 } /* Comment.Hashbang */ 12 | .highlight .cm { color: #747369 } /* Comment.Multiline */ 13 | .highlight .cp { color: #747369 } /* Comment.Preproc */ 14 | .highlight .cpf { color: #747369 } /* Comment.PreprocFile */ 15 | .highlight .c1 { color: #747369 } /* Comment.Single */ 16 | .highlight .cs { color: #747369 } /* Comment.Special */ 17 | .highlight .gd { color: #f2777a } /* Generic.Deleted */ 18 | .highlight .ge { font-style: italic } /* Generic.Emph */ 19 | .highlight .gh { color: #f2f0ec; font-weight: bold } /* Generic.Heading */ 20 | .highlight .gi { color: #99cc99 } /* Generic.Inserted */ 21 | .highlight .gp { color: #747369; font-weight: bold } /* Generic.Prompt */ 22 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 23 | .highlight .gu { color: #66cccc; font-weight: bold } /* Generic.Subheading */ 24 | .highlight .kc { color: #cc99cc } /* Keyword.Constant */ 25 | .highlight .kd { color: #cc99cc } /* Keyword.Declaration */ 26 | .highlight .kn { color: #66cccc } /* Keyword.Namespace */ 27 | .highlight .kp { color: #cc99cc } /* Keyword.Pseudo */ 28 | .highlight .kr { color: #cc99cc } /* Keyword.Reserved */ 29 | .highlight .kt { color: #ffcc66 } /* Keyword.Type */ 30 | .highlight .ld { color: #99cc99 } /* Literal.Date */ 31 | .highlight .m { color: #f99157 } /* Literal.Number */ 32 | .highlight .s { color: #99cc99 } /* Literal.String */ 33 | .highlight .na { color: #6699cc } /* Name.Attribute */ 34 | .highlight .nb { color: #f2f0ec } /* Name.Builtin */ 35 | .highlight .nc { color: #ffcc66 } /* Name.Class */ 36 | .highlight .no { color: #f2777a } /* Name.Constant */ 37 | .highlight .nd { color: #66cccc } /* Name.Decorator */ 38 | .highlight .ni { color: #f2f0ec } /* Name.Entity */ 39 | .highlight .ne { color: #f2777a } /* Name.Exception */ 40 | .highlight .nf { color: #6699cc } /* Name.Function */ 41 | .highlight .nl { color: #f2f0ec } /* Name.Label */ 42 | .highlight .nn { color: #ffcc66 } /* Name.Namespace */ 43 | .highlight .nx { color: #6699cc } /* Name.Other */ 44 | .highlight .py { color: #f2f0ec } /* Name.Property */ 45 | .highlight .nt { color: #66cccc } /* Name.Tag */ 46 | .highlight .nv { color: #f2777a } /* Name.Variable */ 47 | .highlight .ow { color: #66cccc } /* Operator.Word */ 48 | .highlight .w { color: #f2f0ec } /* Text.Whitespace */ 49 | .highlight .mb { color: #f99157 } /* Literal.Number.Bin */ 50 | .highlight .mf { color: #f99157 } /* Literal.Number.Float */ 51 | .highlight .mh { color: #f99157 } /* Literal.Number.Hex */ 52 | .highlight .mi { color: #f99157 } /* Literal.Number.Integer */ 53 | .highlight .mo { color: #f99157 } /* Literal.Number.Oct */ 54 | .highlight .sa { color: #99cc99 } /* Literal.String.Affix */ 55 | .highlight .sb { color: #99cc99 } /* Literal.String.Backtick */ 56 | .highlight .sc { color: #f2f0ec } /* Literal.String.Char */ 57 | .highlight .dl { color: #99cc99 } /* Literal.String.Delimiter */ 58 | .highlight .sd { color: #747369 } /* Literal.String.Doc */ 59 | .highlight .s2 { color: #99cc99 } /* Literal.String.Double */ 60 | .highlight .se { color: #f99157 } /* Literal.String.Escape */ 61 | .highlight .sh { color: #99cc99 } /* Literal.String.Heredoc */ 62 | .highlight .si { color: #f99157 } /* Literal.String.Interpol */ 63 | .highlight .sx { color: #99cc99 } /* Literal.String.Other */ 64 | .highlight .sr { color: #99cc99 } /* Literal.String.Regex */ 65 | .highlight .s1 { color: #99cc99 } /* Literal.String.Single */ 66 | .highlight .ss { color: #99cc99 } /* Literal.String.Symbol */ 67 | .highlight .bp { color: #f2f0ec } /* Name.Builtin.Pseudo */ 68 | .highlight .fm { color: #6699cc } /* Name.Function.Magic */ 69 | .highlight .vc { color: #f2777a } /* Name.Variable.Class */ 70 | .highlight .vg { color: #f2777a } /* Name.Variable.Global */ 71 | .highlight .vi { color: #f2777a } /* Name.Variable.Instance */ 72 | .highlight .vm { color: #f2777a } /* Name.Variable.Magic */ 73 | .highlight .il { color: #f99157 } /* Literal.Number.Integer.Long */ 74 | -------------------------------------------------------------------------------- /_screenshots/lighthouse-report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/_screenshots/lighthouse-report.png -------------------------------------------------------------------------------- /_screenshots/moonwalk-mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/_screenshots/moonwalk-mono.png -------------------------------------------------------------------------------- /_screenshots/moonwalk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/_screenshots/moonwalk.png -------------------------------------------------------------------------------- /_screenshots/twitter_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/_screenshots/twitter_card.png -------------------------------------------------------------------------------- /about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: About 4 | --- 5 | 6 | This is an example page! 7 | 8 | Actually, it has the same layout of a post... -------------------------------------------------------------------------------- /assets/css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "moonwalk"; 5 | @import "list"; 6 | @import "syntax"; 7 | -------------------------------------------------------------------------------- /assets/images/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/assets/images/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /assets/images/favicon/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/assets/images/favicon/android-chrome-256x256.png -------------------------------------------------------------------------------- /assets/images/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/assets/images/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /assets/images/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #00aba9 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/images/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/assets/images/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /assets/images/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/assets/images/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /assets/images/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/assets/images/favicon/favicon.ico -------------------------------------------------------------------------------- /assets/images/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/assets/images/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /assets/images/favicon/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.14, written by Peter Selinger 2001-2017 9 | 10 | 12 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /assets/images/favicon/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Moonwalk", 3 | "short_name": "Moonwalk", 4 | "icons": [ 5 | { 6 | "src": "/assets/images/favicon/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/assets/images/favicon/android-chrome-256x256.png", 12 | "sizes": "256x256", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /bin/bootstrap: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "==> Running \`bundle install\`" 6 | bundle install 7 | -------------------------------------------------------------------------------- /bin/start: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | bundle exec jekyll serve 4 | -------------------------------------------------------------------------------- /blog.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: blog 3 | --- 4 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/favicon.ico -------------------------------------------------------------------------------- /github_pages.md: -------------------------------------------------------------------------------- 1 | ## Use Moonwalk with Github Pages 2 | 3 | You can use Github Pages for deploying moonwalk for free. 4 | 5 | > If you are deploying Moonwalk on Github Pages, I recommend forking Moonwalk and change the dependency (in `moonwalk.gemspec` & `_config.yml`) from `jekyll-soopr-seo-tag` to `jekyll-seo-tag` - Github Pages only allow a specific list of gems to be installed. 6 | 7 | 8 | ### GitHub Pages installation 9 | 10 | If you want to use this theme for your Jekyll's site deployed on [GitHub Pages](https://pages.github.com/), follow the instructions on [this page](https://docs.github.com/en/github/working-with-github-pages/adding-a-theme-to-your-github-pages-site-using-jekyll#adding-a-theme). 11 | 12 | #### Please Note 13 | The default branch that Github pages uses to build and deploy the site is gh-pages branch (and not the master/main branch). To deploy master branch instead, you can change the settings as follows: 14 | 15 | FORKED_REPO > Settings > Pages > Source > select(Branch=Master) 16 | -------------------------------------------------------------------------------- /images/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/images/.gitkeep -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: home 3 | --- -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/logo.png -------------------------------------------------------------------------------- /moonwalk.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "moonwalk" 5 | spec.version = "0.1.3" 6 | spec.authors = ["Abhinav Saxena"] 7 | spec.email = ["abhinav061@gmail.com"] 8 | 9 | spec.summary = "A fast and minimalist Jekyll theme with clean dark mode." 10 | spec.homepage = "https://github.com/abhinavs/moonwalk" 11 | spec.license = "MIT" 12 | 13 | spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r!^(assets|_layouts|_includes|_sass|LICENSE|README|_config\.yml)!i) } 14 | 15 | spec.add_runtime_dependency "jekyll", "~> 4.2.0" 16 | spec.add_runtime_dependency "jekyll-feed", "~> 0.15.0" 17 | spec.add_runtime_dependency "jekyll-soopr-seo-tag", "~> 2.7.3" 18 | spec.add_runtime_dependency "rouge", "~> 3.23.0" 19 | spec.add_runtime_dependency "webrick", "~> 1.7" 20 | end 21 | -------------------------------------------------------------------------------- /moonwalk_on_windows.md: -------------------------------------------------------------------------------- 1 | ## Jekyll: Running Moonwalk Theme Locally on Windows 2 | 1. Download Ruby Devkit 3.0.3 https://rubyinstaller.org/downloads/ (NOT 3.1.x as it is bugged) 3 | 2. Launch an elevated cmd and install the Ruby package manager: `gem install bundler` 4 | 3. Clone Moonwalk repository: `git clone https://github.com/abhinavs/moonwalk` 5 | 4. Run Moonwalk repository using Ruby: `cd `, `bin/bootstrap`, `bin/start` 6 | 5. If successful, you will receive a prompt that the server is being hosted on http://127.0.0.1:4000. 7 | 8 | ### Acknowledgement 9 | Thanks to [Othman Alikhan](https://github.com/OthmanEmpire) for reporting the issue with Ruby 3.1.x and suggesting these installation instructions. 10 | -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abhinavs/moonwalk/f1491c81fb60b13d79734d15eb798139928d1baf/robots.txt --------------------------------------------------------------------------------