🚧 This documentation is a Work In Progress!
Skip to content

Configuration Guide

You can customize the behavior and data of your portfolio using config.yml. This file serves as the master source of truth for your site, controlling everything from SEO metadata to the content of individual sections.

Top-Level Structure

The configuration is divided into several main blocks that map directly to the root keys in your config.yml:

  • site: Metadata, SEO, and global site settings.
  • theme: Visual appearance and navigation behavior.
  • home_page: Content for the primary sections of your site.
  • tasks: Public roadmap and goal tracking.
  • tools: Functional utilities like link shorteners.
  • custom: User-defined variables for re-use.

site

The site block contains global settings for your site identity and SEO. This information is used to generate meta tags, site titles, and social sharing previews.

KeyTypeDefaultDescription
titlestr"Your Name"The name displayed in the browser tab and site headers.
taglinestr"Short bio..."A brief desc used for SEO meta tags.
faviconstr(default icon)Path to your site's favicon.
social_cardstr(default img)Preview image used when sharing your site on social media.
urlstr"auto"Canonical URL. Use auto for automatic CI/CD detection.
pathstr"auto"Base path for sub-directory deployments.
on_broken_linksstr"throw"Behavior when a link is broken (throw, warn, ignore).
on_missing_anchorsstr"throw"Behavior when a link anchor (#) is missing.
robots_txtdict{enable: true}Configuration for robots.txt generation.
rssbooltrueEnable RSS and Atom feeds for the blog.
head_tagslist[]Custom HTML tags to inject into <head> (see Advanced section).
cors_proxylist[]Custom CORS proxies for image loading (see Advanced section).

theme

The theme block controls the visual appearance and navigation behavior of your portfolio. It allows you to toggle dark mode, customize the sidebar, and enable advanced Markdown features.

appearance

Settings related to the visual theme and mode switching.

KeyTypeDefaultDescription
dark_modebooltrueEnable the dark theme by default.
disable_switchboolfalseHide the dark/light mode toggle.
disable_brandingboolfalseHide the "Portosaurus vX.X.X" link in the navbar.

Settings for the site's navigation components.

KeyTypeDefaultDescription
collapsable_sidebarbooltrueAllow users to collapse the side navigation.
hide_navbar_on_scrollbooltrueAutomatically hide the navbar when scrolling down.

markdown

Fine-tune the behavior of the Markdown renderer and documentation features.

KeyTypeDefaultDescription
on_broken_linksstr"throw"MD-specific broken link behavior.
on_broken_imagesstr"throw"MD-specific broken image behavior.
mermaidbooltrueEnable support for Mermaid.js diagrams.

home_page

The home_page block contains the content for the primary sections of your site. This is where you define your hero banner, about text, project showcase, and more.

hero

The hero section is the first thing visitors see. It should provide a clear and concise introduction to who you are.

KeyTypeDefaultDescription
titlestr{​{site.title}​}The main heading (defaults to site title).
professionstr"Software Engineer"Your professional title.
descstr{​{site.tagline}​}A short bio or mission statement.
profile_picstr(default icon)Path to your main profile image.
introstr"Hello there, I'm"Small greeting text above the title.
subtitlestr"I am a"Text displayed above your profession.
learn_more_btn_txtstr"Learn More"Text for the primary call-to-action button.

about

The about section allows you to provide a more detailed biography and list your technical skills.

KeyTypeDefaultDescription
enablebooltrueToggle the About section.
headingstr"About Me"Heading for the about section.
subheadingstrnullSubheading for the about section.
imagestrnullOptional bio image (falls back to profile pic).
biolist[...]List of strings, each rendered as a paragraph.
skills_headingstr"My Skills"Heading for the technical skills section.
skillslist[]List of skills to display as badges.
resumestrnullLink to your resume/CV file.

project_shelf

The project shelf is a curated showcase of your best work. You can feature specific projects to give them more prominence.

KeyTypeDefaultDescription
enablebooltrueToggle the Project Shelf.
headingstr"My Projects"Heading for the project section.
subheadingstrnullSubheading for the project section.
autoplaybooltrueEnable/disable automatic scrolling for the shelf.
projectslist[]List of project objects (see schema below).

Project Object Schema:

KeyTypeDefaultDescription
titlestr"Future Project"Name of the project.
imgstr(blank icon)Path to project thumbnail. Supports internal paths using {​{portoRoot}​} (e.g., {​{portoRoot}​}/src/assets/img/icon.png) or external URLs.
statestr"active"Project status badge (active, completed, maintenance, paused, archived, planned). Rendered as a themed pill in the top-right.
featuredboolfalseIf true, the project gets a prominent border and is automatically sorted to the beginning of the carousel.
descstr"Coming soon..."Brief desc of the project and tech stack.
tagslist[]Tech keywords (e.g., ["React", "Node"]). Displayed as micro-glass pills inside the image container.
websitestrnullURL to the live website or production version.
repostrnullURL to the source code repository (e.g., GitHub).
demostrnullURL to a live demo or interactive preview.

experience

The experience section provides a timeline of your professional career, education, or other milestones.

KeyTypeDefaultDescription
enableboolfalseToggle the Experience section.
headingstr"Experience"Heading for the experience section.
subheadingstrnullSubheading for the experience section.
listlist[]List of work experience objects.

Experience Object Schema:

KeyTypeDefaultDescription
companystrnullName of the organization.
rolestrnullYour job title.
durationstrnullTime period (e.g., "2022 - Present").
descstrnullSummary of your responsibilities and achievements.

social

Manage your social media presence and contact links. These are usually displayed in the footer or social section.

KeyTypeDefaultDescription
enablebooltrueToggle social media links.
headingstr"Get In Touch"Heading for the contact section.
subheadingstr(dynamic)Subheading with invitation to connect.
linkslist[]List of social platform objects (see schema below).

Social Link Schema:

KeyTypeDefaultDescription
namestrnullName of the platform (e.g., "GitHub").
iconstrnullIcon identifier (supports FontAwesome/Lucide names).
urlstrnullURL to your profile.

tasks

The tasks block powers a public roadmap and goal tracking system. It allows you to share what you're working on and your progress with your audience.

KeyTypeDefaultDescription
enablebooltrueToggle the public tasks page.
headingstr"Tasks"Heading for the tasks page.
subheadingstr(placeholder)Sub-heading for the page.
listlist[]List of task objects (see schema below).

Task list Object Schema:

KeyTypeDefaultDescription
titlestrnullShort name of the task.
statusstr"todo"Current progress (done, todo, in-progress).
descstrnullOptional details about the task.

tools

The tools block includes functional utilities that enhance your portfolio's capabilities, such as a built-in link shortener.

A built-in utility to create short, memorable URLs that redirect to external sites.

KeyTypeDefaultDescription
enableboolfalseToggle the internal link shortener.
deploy_pathstr"/l"URL base path for redirects.
short_linksdict{}Key-value map of slugs to target URLs.

custom

Define any key-value pairs in the custom block to reference them throughout your content using the {​{custom.key}​} syntax. This is useful for centralizing information like usernames or common links.

yaml
custom:
  github: "yourusername"
  twitter: "@yourhandle"

Advanced Configuration

Custom Head Tags

Inject HTML directly into <head>. Useful for analytics, custom fonts, or verification tags.

yaml
site:
  head_tags:
    - meta:
        name: "desc"
        content: "A professional portfolio built with Portosaurus."
    - script:
        src: "https://example.com/script.js"
        async: true