All Projects → codeinpink → jekyll-portfolio-generator

codeinpink / jekyll-portfolio-generator

Licence: other
Generates a portfolio/project pages (including related projects) out of data files

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to jekyll-portfolio-generator

portfolio
The #1 source of info for stalkers – alternatively, my website.
Stars: ✭ 18 (-67.27%)
Mutual labels:  portfolio
Jekyll-Spotify
Easily output Spotify Embed Player for jekyll
Stars: ✭ 15 (-72.73%)
Mutual labels:  jekyll-plugin
another-portfolio
An eye-catching developer Portfolio, Built on NextJS.
Stars: ✭ 227 (+312.73%)
Mutual labels:  portfolio
experiments
A centralized location for my WebGL and other demos.
Stars: ✭ 34 (-38.18%)
Mutual labels:  portfolio
react-tailwind-portfolio
👨‍🎨 An open-source portfolio template built with React and Tailwind.
Stars: ✭ 124 (+125.45%)
Mutual labels:  portfolio
My-Portfolio-v1
🏡💻 My home on the web
Stars: ✭ 86 (+56.36%)
Mutual labels:  portfolio
Portfolio-Website
Portfolio Website build using HTML5, CSS3, JavaScript and jQuery
Stars: ✭ 109 (+98.18%)
Mutual labels:  portfolio
website
The Official Open-Source version of Gigabyte Developers Incorporated webpage
Stars: ✭ 19 (-65.45%)
Mutual labels:  portfolio
vuepress-homepage
📄 Elegant & friendly homepage (bio, tech portfolio, resume, doc...) template with Markdown and VuePress
Stars: ✭ 302 (+449.09%)
Mutual labels:  portfolio
gatsby-minimal-portfolio
👔 JAMstack (Gatsby JS) content-focused portfolio blog starter. Features include dark-mode, installable PWA, SEO, code highlighting, form, CI/CD.
Stars: ✭ 36 (-34.55%)
Mutual labels:  portfolio
data science portfolio
Portfolio of data science projects completed by me for academic, self learning, and hobby purposes.
Stars: ✭ 51 (-7.27%)
Mutual labels:  portfolio
Alphalio
A clean HTML5 Resume/CV template
Stars: ✭ 23 (-58.18%)
Mutual labels:  portfolio
mario-homepage
A Super Mario portfolio homepage that you can play with.
Stars: ✭ 21 (-61.82%)
Mutual labels:  portfolio
sreetamdas.com
Personal website built with Next.js, TypeScript and Styled-components
Stars: ✭ 175 (+218.18%)
Mutual labels:  portfolio
govuk frontend toolkit gem
A gem wrapper around the govuk_frontend_toolkit files to enable easy integration with Rails
Stars: ✭ 21 (-61.82%)
Mutual labels:  portfolio
rebalance-app
💸 Optimal lazy portfolio rebalancing calculator (in Rust)
Stars: ✭ 37 (-32.73%)
Mutual labels:  portfolio
jekyll-avatar
A Jekyll plugin for rendering GitHub avatars
Stars: ✭ 79 (+43.64%)
Mutual labels:  jekyll-plugin
Portfolio
A responsive portfolio app made with flutter web.
Stars: ✭ 43 (-21.82%)
Mutual labels:  portfolio
Portfolio
Nuxt & Vue based new portfolio website 🚀
Stars: ✭ 24 (-56.36%)
Mutual labels:  portfolio
gregives.co.uk
Personal site and portfolio of software engineer Greg Ives
Stars: ✭ 43 (-21.82%)
Mutual labels:  portfolio

Jekyll Portfolio Generator

Getting Started

Installation

Install portfolio_generator.rb in your plugins directory (_plugins).

Configuration

Set your config options:

  • portfolio_dir - The directory in which the projects will be generated. Defaults to portfolio.

  • skip_related_projects - If true, it will not generate related projects for each project. Defaults to false.

  • related_project_keys - An array of project keys that will be used to compute related projects. This is required if you want to generate related projects. There is no default.

  • related_min_common - As a decimal, the minimum percentage of keys that should be common for a project to be considered related. Defaults to 0.6.

Sample _config.yml:

# ...

portfolio_dir: "projects"

related_project_keys: ["category", "technology"]

related_min_common: 0.7

# ...

Layout

Create a layout file named project.html in your _layouts folder that will be used for the project pages.

Sample project.html:

<h2>{{ page.title }} <span>{{ page.category }}</span></h2>

<p>{{ page.description }}</p>

<ul>
    {% for technology in page.technology %}
    <li><a>{{ technology }}</a></li>
    {% endfor %}
</ul>

The project page will have access to any keys you use in your project data files, so to access them you just need to use the page variable (e.g. {{ page.KEY }}).

Data Files

This plugin assumes that the project data files will be inside a projects directory inside of the _data directory. Each project must have its own file, and each project must have a key named title.

Sample Project Data File

Tokyo Drift Cats.yml:

title: Tokyo Drift Cats
description: An illegal street racing game but with cats.
category: game development
technology:
    - C++
    - Git

Using Projects in Templates

If you want to include your projects in your index.html or portfolio.html, you can access your projects like this:

{% assign projects = site.data.projects | get_projects_from_files | sort:'date' %}
{% for project in projects reversed %}
    <!-- portfolio-item -->
    <h2>{{ project.title }} <span>{{ project.category | slugify }}</h2>

    <a href="https://github.com/{{ project.dir }}">
        <img src="{{ project.image.url }}" alt="{{ project.image.alt }}" title="{{ project.image.title }}">
    </a>
    <!-- portfolio-item -->
{% endfor %}

This will show your projects with the most-recent being first (if you include the date in your project files). I recommend always using the get_projects_from_files filter. Without it, you'll have to do this, and the projects won't be in reverse chronological order:

{% for project_file in site.data.projects %}
    {% assign project = project_file[1] %}
    <!-- portfolio-item -->
    <h2>{{ project.title }} <span>{{ project.category | slugify }}</h2>

    <a href="https://github.com/{{ project.dir }}">
        <img src="{{ project.image.url }}" alt="{{ project.image.alt }}" title="{{ project.image.title }}">
    </a>
    <!-- portfolio-item -->
{% endfor %}

Related Projects

Related projects are generated for each project by computing the number of matches between the projects and adding the projects as related if they are greater than or equal to the minimum required. They are sorted such that the most related appear first.

Using Related Projects in Templates

Assuming this is in the project.html layout file:

{% if page.related_projects.size > 0 %}
<h3>Related Projects</h3>
{% for project in page.related_projects %}
<a href="https://github.com/{{ project.dir }} ">
    <img src="{{ project.image.url }}" alt="{{ project.image.alt }}" title="{{ project.image.title }}">
</a>
{% endfor %}
{% endif %}

The plugin adds all related projects, so if a project has a lot of related projects, you might have to add a limit, like so:

{% if page.related_projects.size > 0 %}
<h3>Related Projects</h3>
{% for project in page.related_projects limit:3 %}
<a href="https://github.com/{{ project.dir }} ">
    <img src="{{ project.image.url }}" alt="{{ project.image.alt }}" title="{{ project.image.title }}">
</a>
{% endfor %}
{% endif %}

More Examples

For more examples, check out the repo for codeinpink.github.io! The source code is in the source branch and the generated content is in the master branch.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].