Skip to main content

YAML Configuration

The file _data/site.yaml controls global site settings — header, footer, navigation, pricing, FAQ, and more.

This page documents every field.


How _data/ Works​

Every .yaml or .yml file inside _data/ is loaded and merged into a single config object.

FileMerged As
_data/site.yamlTop-level keys
_data/author.yamlUnder author key
_data/products.yamlUnder products key

The engine also supports a legacy config.yaml at the project root — it is merged if present.


Site Identity​

name: PYCORA
title: Pycora — Python Static Site Generator
description: A premium Python SSG by Axcora.
url: https://pycorapro.axcora.com
author: Axcora Technology
twitter_username: "@axcoratech"
FieldPurpose
nameInternal site name (meta tags)
titleBrowser tab and SEO title
descriptionMeta description
urlLive site URL (used in sitemap and feeds)
authorSite owner
twitter_usernameTwitter handle for Twitter Card

Brand Assets​

image: /img/logo.webp
favicon: /img/favicon.webp
logo: /img/logo.webp
FieldPurpose
imageDefault social share image
faviconBrowser tab icon
logoHeader logo

Site Meta​

site_name: PYCORA PRO
lang: en
locale: en_US
type: website
keywords:
- python
- ssg
- jamstack
show_widget: true
FieldPurpose
site_nameDisplay name in header
langHTML lang attribute
localeOpen Graph locale
typeOpen Graph type
keywordsSEO keywords (list)
show_widgetToggle sidebar widget

About Section​

about:
title: Axcora Technology
logo: /img/logo.webp
description: A software studio since 2018.
button:
text: Visit Axcora
url: https://axcora.com

Used on the About page and home section.


nav:
logo: P
title: PYCORA
sub_title: PRO
list:
- name: Projects
url: /projects/
- name: Journal
url: /journal/
button:
text: Get Pycora Pro
url: https://gumroad.com/pycora-pro
FieldPurpose
logoSingle letter or icon
titleNavbar main title
sub_titleNavbar subtitle
listMenu items (name + URL)
buttonNavbar CTA

Pricing​

pricing:
info: No license • Own forever
title: Pay once. Use forever.
description: Two tiers. Same code quality.
standard_option:
info: STARTER
badge: MINIMALIST
price: FREE
per: forever
description: Simple minimalist design.
item:
- text: Feature one
- text: Feature two
button:
text: Get Starter
url: /starter/
info: Free tier
pro_option:
info: PYCORA PRO
badge: PREMIUM
price: $145
per: one-time
description: Premium Bento Grid design.
item:
- text: Feature one
button:
text: Get Pro
url: https://gumroad.com/pycora-pro
info: Instant download

Two tiers: standard_option and pro_option. Each has the same structure.


FAQ​

faq:
title: Questions, answered.
list:
- q: What is Pycora?
a: A Python static site generator.
- q: Why use Pycora?
a: Because you only need Python.
FieldPurpose
titleSection heading
listArray of {q, a} objects

footer:
title: Let's build
info: something that lasts.
text: Premium Python SSG by Axcora.
button:
text: Get Pycora Pro
url: https://gumroad.com/pycora-pro
button_secondary:
text: Read Docs
url: https://docs.example.com
trust:
- One payment — own forever
- Unlimited projects
copyrights: © 2026 PYCORA PRO
list:
- name: Home
url: /
- name: Projects
url: /projects/
FieldPurpose
titleFooter heading
infoSubheading
textDescription
buttonPrimary CTA
button_secondarySecondary CTA
trustTrust badges (list)
copyrightsCopyright line
listFooter links

toc: Table of Contents
related_post: Related Posts
FieldPurpose
tocLabel for the table of contents
related_postLabel for related posts

About URL​

about_url: /about/

The URL of the About page. Used in templates.


Adding a New Config File​

You can split configuration across multiple files. Example:

_data/site.yaml:

name: PYCORA
title: Pycora SSG

_data/social.yaml:

twitter: "@axcoratech"
github: mesinkasir

The config is merged into:

name: PYCORA
title: Pycora SSG
social:
twitter: "@axcoratech"
github: mesinkasir

Access in templates:

{{ social.twitter }}
{{ social.github }}

Accessing Config in Templates​

Every config key is available in every template:

{{ site.name }}
{{ site.title }}
{{ site.nav.title }}
{{ site.footer.title }}
{{ site.pricing.pro_option.price }}

For nested values, use dot notation.


Best Practices​

  • Keep site.yaml as the main file — split only when needed
  • Use lowercase keys with hyphens or underscores
  • Quote strings with special characters
  • Keep URLs absolute in url and buttons
  • Do not rename existing keys — templates depend on them

Troubleshooting​

Config values do not appear​

  1. Check that the file is inside _data/
  2. Check that the YAML is valid
  3. Check that the key name matches the template variable
  4. Rebuild the site

Nested values are empty​

  1. Check indentation — YAML uses spaces, not tabs
  2. Check that all parent keys exist
  1. Check that nav.list has at least one item
  2. Check that each item has name and url
  3. Rebuild
  1. Check each URL in footer.list
  2. Confirm each URL points to a real page

Custom YAML file is ignored​

  1. Check that the file ends with .yaml or .yml
  2. Check that it is inside _data/
  3. Check that it is not hidden (no leading dot)


What's Next?​