---
layout: layouts/base.njk
withSidebar: false
title: CV
permalink: /cv/
pagefindIgnore: true
---
{# CV page — uses configurable layout when cvPageConfig exists, falls back to hardcoded layout #}
{% set hasCvData = (cv.experience and cv.experience.length) or
(cv.projects and cv.projects.length) or
(cv.skills and ((cv.skills or {}) | dictsort | length)) or
(cv.interests and ((cv.interests or {}) | dictsort | length)) %}
{% if hasCvData %}
{# Configurable layout — use cvPageConfig if available #}
{% if cvPageConfig and cvPageConfig.sections %}
{% include "components/cv-builder.njk" %}
{# Fallback — hardcoded layout for backward compatibility #}
{% else %}
{# CV identity — check cvPageConfig.identity first, fall back to site.author #}
{% set cvId = cvPageConfig.identity if (cvPageConfig and cvPageConfig.identity) else {} %}
{% set authorName = cvId.name or site.author.name %}
{% set authorAvatar = cvId.avatar or site.author.avatar %}
{% set authorTitle = cvId.title or site.author.title %}
{% set authorBio = cvId.bio or site.author.bio %}
{% set socialLinks = cvId.social if (cvId.social and cvId.social.length) else site.social %}
{% set cvLocality = cvId.locality or site.author.locality %}
{% set cvCountry = cvId.country or site.author.country %}
{% set cvOrg = cvId.org or site.author.org %}
{% set cvUrl = cvId.url or '' %}
{% set cvEmail = cvId.email or site.author.email %}
{% set cvKeyUrl = cvId.keyUrl or site.author.keyUrl %}
{# Hero / intro #}
{{ authorTitle }}
{{ authorBio }}
{{ authorName }}
{% if authorTitle %}
Last updated:
{% endif %} {% endif %} {% else %}No CV data available yet. Add your experience, projects, and skills via the admin dashboard.