JekyllPortfolio

plaintro — Jekyll Portfolio Template

By xh5a5n6k6

Plaintro is a responsive Jekyll theme for personal websites, offering layouts for blogs, portfolios, resumes, and archives, under the MIT license.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-03View source

What stands out

A quick read of the recorded project description.

01

Provides multiple Jekyll layouts including default, blog, post, blog-archive, portfolio, and resume

02

Top navigation and social links are configured through the menu and social lists in _config.yml

03

The portfolio page uses two include templates, portfolio-category.html and portfolio-section.html, to organize categories and projects

04

Integrates Jekyll Feed, Jekyll Paginate, Jekyll SEO Tag, and Google Analytics

05

The archive page is implemented in pure Liquid and currently supports only year-based archiving

06

Responsive design, with the repository under the MIT license

Template Details

Plaintro is a Jekyll theme aimed at personal websites. The repository describes it as a "Jekyll theme designed for personal websites," and a demo site is deployed on GitHub Pages. The theme provides several page layouts: default as the base layout, blog for paginated post lists, post for individual articles, blog-archive for a pure Liquid archive page organized by year, portfolio for portfolios, and resume for resume pages.

Functionally, the theme integrates Normalize.css, Font Awesome, Google Analytics, Jekyll Feed, Jekyll Paginate, and Jekyll SEO Tag, and uses a responsive design. The top navigation and social links are configured through the menu and social lists in _config.yml, with social icon names taken from Font Awesome. The portfolio page is organized using two include templates: portfolio-category.html for category headings and portfolio-section.html for individual projects, each requiring the description file path, cover image path, and project page path to be specified separately.

There are two installation methods: using it as a gem theme, or referencing it on GitHub Pages via jekyll-remote-theme. Because GitHub Pages builds use the --safe flag, which disables custom plugins, disk caching, and ignores symbolic links, you cannot directly rely on custom plugins in the theme; instead, use a remote theme or clone the repository yourself. The archive page currently supports only year-based archiving. Google Analytics support allows a UA- or G- prefixed tracking ID to be entered via google_analytics_id in _config.yml.

Regarding licensing, the repository uses the MIT license, permitting free use, modification, commercial use, and distribution of this version of the code, provided the copyright notice and license notice are retained when distributing. Third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses, and external services such as domains and hosting may incur additional charges.

JekyllPortfolio

Is it right for your project?

Use Cases

  • Building a personal website with blog and portfolio pages
  • Referencing the theme on GitHub Pages via jekyll-remote-theme
  • Installing the theme as a gem into an existing Jekyll site
  • Providing separate layouts for a personal resume or project showcase pages

Suitable For

  • Users building personal websites with Jekyll
  • Individual developers or designers who need a combination of blog, portfolio, and resume pages
  • Users who want to host a static personal site on GitHub Pages

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Gem method: add gem "plaintro" to the Gemfile, set theme: plaintro in _config.yml, then run bundle or gem install plaintro

  2. 2

    GitHub Pages method: add github-pages and jekyll-remote-theme dependencies, and configure plugins and remote-theme: xh5a5n6k6/plaintro in _config.yml

  3. 3

    Site configuration is centralized in _config.yml; you can copy the theme's _config.yml and modify fields such as menu and social as needed

  4. 4

    When enabling the blog page, its URL must match paginate_path in _config.yml

  5. 5

    Posts must be placed in the _posts directory and named in the format date-title.md; the archive page currently supports only year-based archiving

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version of the code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Building on GitHub Pages uses the --safe flag, which disables custom plugins, disk caching, and ignores symbolic links, so custom plugins in the theme cannot be used directly; use jekyll-remote-theme or clone the repository yourself.
  • The archive page currently supports only year-based archiving, not archiving by month or category.
  • Using Google Analytics requires registering a Google Analytics account and providing a tracking ID (starting with UA- or G-); this is an external service and may involve additional terms and fees.
  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Github Pages uses the [--safe flag](https://jekyllrb.com/docs/configuration/options/) to build jekyll websites, which disable custom plugins, caching to disk, and ignore symbolic links.

Original README

It now only supports yead-based archive.

Original README

To track your website through [Google Analytics](https://analytics.google.com/analytics/web/), simply set the [Track ID]

Original README
https://github.com/xh5a5n6k6/plaintro/blob/master/LICENSE.txthttps://github.com/xh5a5n6k6/plaintro/blob/master/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-03. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
Partly documented · 68 / 100
Technologies
Jekyll
Website type
Portfolio
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2021-08-24
Screenshot last checked
2026-10-03

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Jekyll as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: 4e185eec15d5e649c5d780f2730ccae3c10542e532dbf2d580e1261bfa05d46b

2026-10-03T08:50:21.045Z

Source file / repository
# Plaintro
[![Gem Version](https://badge.fury.io/rb/plaintro.svg)](https://badge.fury.io/rb/plaintro)

Plaintro is a responsive Jekyll theme aimed at personal websites.

[Live Demo](https://xh5a5n6k6.github.io/plaintro/)

## Table of Contents
- [Features](#features)
- [Installation](#installation)
    - [Gem-based theme](#gem-based-theme)
    - [Github Pages](#github-pages)
- [Usage](#usage)
    - [Configuration](#configuration)
    - [Top Header Bar](#top-header-bar)
    - [Default Page](#default-page)
    - [Blog](#blog)
    - [Post](#post)
    - [Archive](#archive)
    - [Portfolio](#portfolio)
    - [Resume](#resume)
    - [Google Analytics](#google-analytics)
- [Contributing](#contributing)
- [Development](#development)
- [License](#license)

## Features
- [Normalize.css](https://github.com/necolas/normalize.css)
- [Font Awesome](https://fontawesome.com)
- [Google Analytics](https://analytics.google.com/analytics/web/)
- [Jekyll Feed](https://github.com/jekyll/jekyll-feed)
- [Jekyll Paginate](https://github.com/jekyll/jekyll-paginate)
- [Jekyll SEO Tag](https://github.com/jekyll/jekyll-seo-tag)
- Responsive web design
- Multiple layouts for different pages (see [Usage](#usage) for more details)
- Easy-to-use templates for adding a new project to the portfolio page

## Installation
There are two ways to use plaintro: Gem-based theme and Github Pages.

### Gem-based theme
1. Add this line to your Jekyll site's `Gemfile`:
    ```ruby
    gem "plaintro"
    ```
2. And add this line to your Jekyll site's `_config.yml`:
    ```yaml
    theme: plaintro
    ```
3. And then execute:
    ```
    $ bundle
    ```
4. Or install it yourself as:
    ```
    $ gem install plaintro
    ```

### Github Pages
Github Pages uses the [--safe flag](https://jekyllrb.com/docs/configuration/options/) to build jekyll websites, which disable custom plugins, caching to disk, and ignore symbolic links. Because of that constraint, you can either fork/clone the repo and customize the theme, or use [jekyll-remote-theme](https://github.com/benbalter/jekyll-remote-theme) instead.

To build Github Pages via [jekyll-remote-theme](https://github.com/benbalter/jekyll-remote-theme), follow the steps below:
1. Add these lines to your Jekyll site's `Gemfile`:
    ```ruby
    gem "github-pages", group: :jekyll_plugins
    gem "jekyll-remote-theme"
    ```
2. And add these lines to your Jekyll site's `_config.yml`:
    ```yaml
    plugins:
        - jekyll-remote-theme

    remote-theme: xh5a5n6k6/plaintro
    ```

## Usage
### Configuration
All site configurations are set in the [\_config.yml](./_config.yml). The simplest way to use it is to copy the [\_config.yml](./_config.yml) to your Jekyll site, and then customize it.

### Top Header Bar
There are two main information sections shown in the header bar: navigation and social links.

- #### Navigation
    Top navigation are built from the menu list in the `_config.yml`. You can easily arrange the order and modify the contents.

    ```yaml
    menu:
      - {name: 'Home', url: '/'}
      - {name: 'Blog', url: '/blog/'}
      - {name: 'Portfolio', url: '/portfolio/'}
      - {name: 'Resume', url: '/resume.html'}
    ```

    **Note**: if you enable the blog page, be sure its url matches the `paginate_path` set in the `_config.yml`. (See [Blog](#blog) for more details)

- #### Social Links
    Social networks are built from the social list in the `_config.yml`. You can easily modify the contents and change icons, which can be found on [Font Awesome](https://fontawesome.com).

    ```yaml
    social:
      - {icon: 'github-square', link: 'URL/TO/YOUR/GITHUB/ACCOUNT'}
      - {icon: 'vimeo-square', link: 'URL/TO/YOUR/VIMEO/ACCOUNT'}
      - {icon: 'twitter-square', link: 'URL/TO/YOUR/TWITTER/ACCOUNT'}
      - {icon: 'linkedin', link: 'URL/TO/YOUR/LINKEDIN/ACCOUNT'}
    ```

### Default Page
Default is the most common layout used in plaintro. Every layout is based on it.

To use this layout, add these data in your file:
```yaml
---
layout: default
title: YOUR PAGE TITLE
---
```
And then write contents with Markdown.

### Blog
When using [jekyll-paginate](https://github.com/jekyll/jekyll-paginate), if you specify the `paginate_path` in the `_config.yml`, it will read in `/PATH/TO/YOUR/BLOG/index.html` and write the output to `/PATH/TO/YOUR/BLOG/page:num/`. Please refer to the [Jekyll docs for pagination](https://jekyllrb.com/docs/pagination/).

To use the blog layout, create a file named with `index.html` and add these data inside:
```yaml
---
layout: blog
title: Blog
---
```

### Post
Before using this layout, be sure the conventions in Jekyll when writing a post:
- Put it in the `./_posts` folder
- Name it with the date first like `2021-08-05-My-blog-post.md`

You can refer to the [Jekyll docs for writing posts](https://jekyllrb.com/docs/posts/).

Now to use the post layout, add these data in your post:
```yaml
---
layout: post
title: YOUR POST TITLE
author: POST AUTHOR
tags: [TAG-A, TAG-B, TAG-C]
---
```
And then write down your post contents.

### Archive
Plaintro provides the archive page implemented in pure [Liquid](https://shopify.github.io/liquid/). It now only supports yead-based archive.

To use this, simply create a file and add these data in it:
```yaml
---
layout: blog-archive
title: Archive
---
```

### Portfolio
Porfolio is a feature page with portfolio layout, it contains all include template contents user provided.

To use it in your file like `porfolio.html`, first add these data inside:
```yaml
---
layout: portfolio
title: Portfolio
---
```

Next, add contents to your portfolio page, plaintro provides two include templates to help you achieve it:
- Template for each category, you just need to edit the **title** blank with the category name. 
  For example, replace "CATEGORY NAME" with "Projects".

    ```yaml
    {% include /portfolio-category.html title="CATEGORY NAME" %}
    ```
- Template for each section (project), there are three blanks you need to edit: 
    - **description**: path to the short description of your section shown in the portfolio page.<br>
      For example, `/portfolio/section-a.md`. It should be noted that this path MUST be under the `./_includes/` folder, i.e., the actual path of the above example is `./_includes/portfolio/section-a.md`, but you can skip the leading `./includes` as the desciption path.
    - **image**: path to the cover image of your section.<br>
      For example, `/assets/images/section-a.jpg`.
    - **url**: path to your section page.<br>
      For example, `/portfolio/section-a.html`.<br><br>

    ```yaml
    {% include /portfolio-section.html
        description="/PATH/TO/SECTION/DESCRIPTION"
        image="/PATH/TO/SECTION/IMAGE"
        url="/PATH/TO/SECTION/PAGE"
    %}
    ```

To correctly use these templates, you can take [./portfolio/index.html](./portfolio/index.html) as a reference.

### Resume
To use resume layout in your file, simply add these data inside:
```yaml
---
layout: resume
title: Resume
---
```
Then you can take [resume.md](./resume.md) as a reference and write down the contents.

### Google Analytics
To track your website through [Google Analytics](https://analytics.google.com/analytics/web/), simply set the [Track ID](https://support.google.com/analytics/answer/7372977?hl=en) in your Jekyll site's `_config.yml`:
```yaml
google_analytics_id: UA-XXXXXXX-X
```
Or if you are using [Google Analytics 4](https://support.google.com/analytics/answer/10089681?hl=en), replace the [Track ID](https://support.google.com/analytics/answer/7372977?hl=en) with the [Measurement ID](https://support.google.com/analytics/answer/7372977?hl=en) in your Jekyll site's `_config.yml`:
```yaml
google_analytics_id: G-XXXXXXXX
```

## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/xh5a5n6k6/plaintro. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.

## Development
To set up your environment to develop this theme, run `bundle install`.

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.

When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled.
To add a custom directory to your theme-gem, please edit the regexp in `plaintro.gemspec` accordingly.

## License
The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.