[
  {
    "path": ".gitignore",
    "content": "_site/\n.sass-cache/\n.jekyll-cache/\n.jekyll-metadata\n.vscode\n**/*.swp\nenv\n"
  },
  {
    "path": "Dockerfile",
    "content": "# Create a Jekyll container from a Ruby Alpine image\n\n# At a minimum, use Ruby 2.5 or later\nFROM ruby:2.7-alpine3.15\n\nWORKDIR /srv/jekyll\n\n# Add Jekyll dependencies to Alpine\nRUN apk update\nRUN apk add --no-cache build-base gcc cmake git\n\nCOPY ./Gemfile* /srv/jekyll\n\n# Update the Ruby bundler and install Jekyll\nRUN gem update bundler && bundle install\n"
  },
  {
    "path": "Gemfile",
    "content": "source \"https://rubygems.org\"\n\ngem 'github-pages', group: :jekyll_plugins\n\ngem \"webrick\", \"~> 1.8\"\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Jorge Sanz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# gh-pages-minima-starter\n\nThis is a template and some instructions for running Github Pages with the [`minima` theme][minima]. This repo has what I consider the minimum pieces for a personal blog using [Jekyll][jk] and [Github Pages][gh-site]:\n\n* Frontpage that includes your last blog posts: `_pages/frontpage.md`\n* Archive for all your posts: `_pages/archive.md`\n* About page: `_pages/about.md`\n* Minimum 404 page: `_pages/404.md`\n* Minimum metadata in the `_config.yml`\n* Example CSS change inside `assets/main.scss`\n* Custom footer template `_includes/footer.html`\n\nCheck out the excellent [`minima` theme][minima] documentation for further details and customization and the [official docs][gh] for more details on how Github Pages work.\n\nFor more details on how to set it up locally, create content, use Github interface, etc. feel free to visit this [website post][dev] or the source code here.\n\nDo you have questions? feel free to [open an issue](https://github.com/jsanz/gh-pages-minima-starter/issues/new/choose) or [contact me](https://jorgesanz.net/contact).\n\nEnjoy!!\n\n[gh-site]: https://pages.github.com/\n[jk]: https://jekyllrb.com/\n[minima]: https://github.com/jekyll/minima/tree/2.5-stable\n[gh]: https://help.github.com/en/github/working-with-github-pages\n[gh-settings]: https://help.github.com/en/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site\n[dev]: https://jsanz.github.io/gh-pages-minima-starter/2020/04/17/local-env.html"
  },
  {
    "path": "_config.yml",
    "content": "title: My blog\ndescription: My very nice blog\nauthor: \"Jorge Sanz\"\n\ntheme: minima\n\nbase_url: /gh-pages-minima-starter\nrepository: jsanz/gh-pages-minima-starter\n\n# Minima social links\ngithub_username: jsanz\nlinkedin_username: jsanz\nrss: rss\n\n# Minima: show excerpts in the frontpage\nshow_excerpts: true\n\nminima:\n  date_format: \"%Y-%m-%d\"\n\n# Minima: custom header links\nheader_pages:\n  - _pages/frontpage.md\n  - _pages/about.md\n  - _pages/archive.md\n\ninclude:\n    - _pages\n\nexclude: \n    - .gitignore\n    - docker-compose.yml\n    - Gemfile\n    - Gemfile.lock\n    - LICENSE\n    - README.md\n"
  },
  {
    "path": "_includes/footer.html",
    "content": "<footer class=\"site-footer h-card\">\n  <data class=\"u-url\" href=\"{{ \"/\" | relative_url }}\"></data>\n\n  <div class=\"wrapper\">\n    <div class=\"footer-col-wrapper\">\n      <div class=\"footer-col footer-col-1\">\n        <ul class=\"contact-list\">\n          <li class=\"p-name\">\n            {%- if site.author -%}\n              {{ site.author | escape }}\n            {%- else -%}\n              {{ site.title | escape }}\n            {%- endif -%}\n            </li>\n            {%- if site.email -%}\n            <li><a class=\"u-email\" href=\"mailto:{{ site.email }}\">{{ site.email }}</a></li>\n            {%- endif -%}\n        </ul>\n      </div>\n\n      <div class=\"footer-col footer-col-2\">\n        {%- include social.html -%}\n      </div>\n\n      <div class=\"footer-col footer-col-3\">\n        <p>{{- site.description | escape -}}</p>\n      </div>\n    </div>\n  </div>\n</footer>\n"
  },
  {
    "path": "_pages/404.md",
    "content": "---\npermalink: /404\nlayout: page\ntitle: Ooops!\n---\n\nThat url does not exist, sorry!!\n"
  },
  {
    "path": "_pages/about.md",
    "content": "---\npermalink: /about\nlayout: page\ntitle: About me\n---\n\nMore details about me on this page with links to my social media profiles and so on.\n\n![](https://www.jorgesanz.net/assets/imgs/me/jsanz_small4.png)\n"
  },
  {
    "path": "_pages/archive.md",
    "content": "---\npermalink: /archive\nlayout: page\ntitle: Blog archive\n---\n\n\n<ul>\n  {% for post in site.posts %}\n    <li>\n      <a href=\".{{ post.url }}\">{{ post.title }}</a>\n    </li>\n  {% endfor %}\n</ul>\n"
  },
  {
    "path": "_pages/frontpage.md",
    "content": "---\npermalink: /\nlayout: home\ntitle: Welcome\nlist_title: My blog posts\n---\n\nThis is a template and some instructions for running Github Pages with the [`minima` theme][minima]. This repo has what I consider the minimum pieces for a personal blog using [Jekyll][jk] and [Github Pages][gh-site].\n\nCheck out the excellent [`minima` theme][minima] documentation for further details and customization and the [official docs][gh] for more details on how Github Pages work.\n\nDo you have questions? feel free to [open an issue][issue] or find out how toreach me from my [contact page][contact].\n\n<img src=\"./assets/imgs/screenshot.png\" width=\"400px\">\n\nFor more details about how this example site works checkout [the github project](https://github.com/jsanz/gh-pages-minima-starter).\n\n\nHave a great day!!\n\n[gh-site]: https://pages.github.com/\n[minima]: https://github.com/jekyll/minima/tree/2.5-stable\n[jk]: https://jekyllrb.com/\n[gh]: https://help.github.com/en/github/working-with-github-pages\n[issue]: https://github.com/jsanz/gh-pages-minima-starter/issues/new/choose\n[contact]: https://jorgesanz.net/contact/"
  },
  {
    "path": "_posts/2020-03-18-my-first-post.md",
    "content": "---\ntitle: \"Tutorial I: my first post\"\ndate: 2020-03-18\nlayout: post\n---\n\nThis is **my very first post**!! I can write\n\n* unnumbered\n* fancy\n* lists\n\nBut also\n\n1. numbered\n1. ones\n1. easily\n\nImages\n\n![a gif!](https://media.giphy.com/media/l0MYt5jPR6QX5pnqM/giphy.gif)\n\nAnd so on...\n"
  },
  {
    "path": "_posts/2020-03-22-get-code.md",
    "content": "---\ntitle: \"Tutorial II: Take the code!\"\ndate: 2020-03-22\nlayout: post\n---\n\nHow to use this template? Well the easiest way may be to hit the **\"Use this template\"** green button on the [Github repository](https://github.com/jsanz/gh-pages-minima-starter) page to copy the repository structure into your own account. You can have your website **without setting up a local environment** (but [you can do it]({{ site.baseurl }}{% post_url 2020-04-17-local-env %}) if you are a bit tech savvy).\n\nAfter creating the project, the first thing I would do is to change the project name at the `Settings` tab. The name of the project will became part of the website main address. So if for example you name your repo as `myblog`, your website will be available at `https://yourusername.github.io/myblog`. There is a special case, if you name your repo as `yourusername.github.io` then the website will be published at `https://yourusername.github.io` which may be a good idea for a personal website!\n\nNext thing to do is to customize the main settings on the `_config.yml` file: website title, description, base URL (remove this setting it if you are deploying to your GitHub user website), and your details. If you don't want to show excerpts of your posts in the front page you can disable that checking removing that entry on adding a `#` at the beginning of that line. You don't need to change anything else.\n\nAfter the configuration is ready you can enable the website publishing on the same `Settings` page a bit further down. Remember to set up the `master` branch as the source of your documents. Once you save your settings wait for a few minutes and your site is ready!!\n\n<img src=\"{{ site.base_url }}{% link /assets/imgs/gh-pages.png %}\" width=\"80%\">\n\nAny time you change anything in your repository you do an operation called _pushing a commit_. On every push the website is rebuilt. You can see the details of that process in the `Environment` section that is accessible from the repository front-page.\n\n\n\n![](./assets/imgs/environments.png)"
  },
  {
    "path": "_posts/2020-03-24-edit-content.md",
    "content": "---\ntitle: \"Tutorial III: editing your content\"\ndate: 2020-03-24\nlayout: post\n---\n\nFrom the [last post]({{ site.base_url }}{% link _posts/2020-03-22-get-code.md %}), your website is published with your details but now how to edit the frontpage, remove the example blog posts or create your own. Let's dive in to that. \n\nFirst thing to know is that [Github Pages](https://pages.github.com/) by default accepts rendering content in HTML and [Markdown](https://daringfireball.net/projects/markdown/syntax). I **strongly** recommend using Markdown because it's very simple and out of your way when you write, since the formatting rules are very simple. If you are going to write a long piece, you may want to use an external editor and then upload or paste your content into github. There are many text editors that support Markdown but if I have to suggest one that works well for writing I'd go for [typora](https://typora.io/) because it's supporting Linux, Windows, and also MacOS (in beta).\n\n<img src=\"{{ site.base_url }}{% link /assets/imgs/typora.png %}\" style=\"width:400px\"><br>\n_Typora_\n"
  },
  {
    "path": "_posts/2020-03-25-github-edit.md",
    "content": "---\ntitle: \"Tutorial IV: editing from Github\"\ndate: 2020-03-25\nlayout: post\n---\n\nEditing pages in Github is **super simple**, just click on the pencil in the top right corner and open an editing interface where you can even preview the changes that you are applying. Once you are done add a short comment to your change (_commit_ in git/github vocabulary) and save them. Remember all changes are saved and available for you to explore afterwards if needed.\n\n![]({{ site.base_url }}{% link /assets/imgs/editing.gif %})\n\nIf your site grows you may want to set up a local environment to make things easier to you. We cover that in the [local environment]({% link _posts/2020-04-15-posts.md %}) post."
  },
  {
    "path": "_posts/2020-04-15-posts.md",
    "content": "---\ntitle: \"Tutorial V: posts\"\ndate: 2020-4-15\nlayout: post\n---\n\nPosts in your website are stored in the `_posts` folder and they follow a naming convention that you should follow using the date first (year, month, day) and then a simple title slug. This helps to keep things organized.\n\nIf you are using Github interface, you can use the top right buttons to create new files or upload them.\n\n![]({{ site.base_url }}{% link /assets/imgs/files.png %})\n\nFind more details on how to write Jekyll posts on [the docs](https://jekyllrb.com/docs/posts/)."
  },
  {
    "path": "_posts/2020-04-17-local-env.md",
    "content": "---\ntitle: \"Tutorial VI: local environment\"\ndate: 2020-4-17\nlayout: post\n---\n\nI've included a simple `docker-compose.yml` file in the root of the repo, so you can spin up a local environment without having to install in your computer Ruby or any other library. If you are versed in `Ruby`, `gems`, and `bundle` you can probably skip this section and go ahead!\n\nJust install [Docker][docker] and [Docker Compose][compose], visit the repo folder and run `docker compose build`. Then, every time you wan to spin up the local environment just run `docker compose up` and visit `http://localhost:8080/gh-pages-minima-starter`. \n\nAlternatively, if you prefer to install all the software locally please follow the [docs][install].\n\nThe compose file is super simple, it just refers to a local `Dockerfile` image definition setting up the current folder as the container `/srv/jekyll` directory and starts the server with convenient options like livereload.\n\n```yaml\nversion: '3'\n\nservices:\n  jekyll:\n    build:\n      context: .\n    command: jekyll serve --watch --force_polling --incremental --port 8080 -H 0.0.0.0 --livereload --livereload-port 35729 --baseurl /gh-pages-minima-starter\n    volumes:\n      - .:/srv/jekyll\n    ports:\n      - '8080:8080'\n      - '35729:35729'\n    environment: \n      RUBYOPT: '-W0'\n      JEKYLL_ENV: production \n```\n\n[install]: https://help.github.com/en/github/working-with-github-pages/testing-your-github-pages-site-locally-with-jekyll\n[docker]: https://docs.docker.com/get-docker/\n[compose]: https://docs.docker.com/compose/\n"
  },
  {
    "path": "_posts/2020-04-19-links.md",
    "content": "---\ntitle: \"Tutorial VII: internal links\"\ndate: 2020-04-19\nlayout: post\n---\n\nIn your blog post you will write links to internal resources, like other articles, pages, and images. You can use relative paths for those assets so for example to link the archive you may use the following code `[archive](/archive)`. This will work fine, since that's the url of your archive, but what happens if you decide to change the url? You'd have to search for any occurrence in your site for any link and fix it.\n\nA different approach is to use a Jekyll feature called *Liquid tags*. From the [documentation](https://jekyllrb.com/docs/liquid/):\n\n> Jekyll uses the [Liquid](https://shopify.github.io/liquid/) templating language to process templates.\n>\n> Generally in Liquid you output content using two curly braces e.g. `{% raw %}{{ variable }}{% endraw %}` and perform logic statements by surrounding them in a curly brace percentage sign e.g. `{% raw %}{% if statement %}{% endraw %}`. To learn more about Liquid, check out the [official Liquid Documentation](https://shopify.github.io/liquid/).\n\nThere is a Liquid tag to link to files, getting as a result the corresponding url for the resource. So for our archive we would use:\n\n```{% raw %}\n[archive]({{ site.base_url }}{% link _pages/archive.md %})\n{% endraw %}```\n\nand this would be automatically converted into\n\n```\n[archive]({{ site.base_url }}{% link _pages/archive.md %})\n```\n\nFor a blog post this:\n\n```{% raw %}\n[first post]({{ site.base_url }}{% link _posts/2020-03-18-my-first-post.md %})\n{% endraw %}```\n\ntransforms into:\n\n```\n[first post]({{ site.base_url }}{% link _posts/2020-03-18-my-first-post.md %})\n```\n\nApart from the benefit of being resilient to changes in the permalinks of your articles, this also has a very important effect: Jekyll **will fail** to process your site if you use a wrong link. This means that Jekyll checks your internal links on every built, and if for any reason you change the name of your file in the future, Jekyll will error with details on where the offending link lives.\n\nAn important final note is that if you paid attention, the links are relative to the root of your domain. If you deploy this site in your personal GitHub space that's OK but if you publish it in a project so your URL is like `https://yourusername.github.io/project` then the URLs will fail. You'd need to put `{% raw %}{{ site.base_url }}{% endraw %}` **before** the `link` tag, for absolute URLs that point to the correct resource.\n\nMore details on this [nice article](https://www.webisland.agency/blog/jekyll-internal-links/).\n"
  },
  {
    "path": "_posts/2020-04-20-html.md",
    "content": "---\ntitle: \"Tutorial VIII: HTML\"\ndate: 2020-04-20\nlayout: post\n---\n\nQuick note on highlighting that Markdown supports raw HTML. That means that if for some reason Markdown falls short or becomes inconvenient for a thing you are authoring, you can always use HTML as a fallback solution. One very common scenario is customizing the width and height of your images.\n\nYou can check the source code of the [editing content]({% link _posts/2020-03-24-edit-content.md %}) post to see how I moved from the standard syntax for images using `![alt text](image path)` to use HTML to allow to set up a custom width using a CSS style.\n\n```html{% raw %}\n<div style=\"text-align:right; margin: 20px 0\">\n  <p>\n    Another example could be to \n    <span style=\"color:red\">change text color</span>.\n  </p>\n</div>\n{% endraw %}```\n\n\n<div style=\"text-align:right; margin: 20px 0\">\n<p>\nAnother example could be to <span style=\"color:red\">change text color</span>.\n</p>\n</div>\n\nEasy right? 😀"
  },
  {
    "path": "assets/main.scss",
    "content": "---\n---\n\n@import \"minima\";\n\n@import url('https://fonts.googleapis.com/css?family=Montserrat&display=swap');\nbody {\n    font-family: 'Montserrat', sans-serif;\n    color: #383838;\n}\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: '3'\n\nservices:\n  jekyll:\n    build:\n      context: .\n    command: jekyll serve --watch --force_polling --incremental --port 8080 -H 0.0.0.0 --livereload --livereload-port 35729 --baseurl /gh-pages-minima-starter\n    volumes:\n      - .:/srv/jekyll\n    ports:\n      - '8080:8080'\n      - '35729:35729'\n    environment: \n      RUBYOPT: '-W0'\n      JEKYLL_ENV: production \n\n"
  }
]