Skip to main content
Your portfolio’s global identity — name, header logo, footer copy, social links, and navigation menus — is controlled by two JSON files in src/data/config/. Updating these files changes the branding and navigation across every page at once, so you only need to edit one place when your name, job title, or social handles change.

Configuration Files at a Glance

site.json

Controls your name/title, header logo text, footer description, copyright line, and social link array.

menu.json

Controls the main navigation items and the footer link list, including which item renders as a CTA button.

src/data/config/site.json

This file holds three top-level keys: identity, header, and footer. The header and footer keys are full section objects — they have their own id, type, data, and settings sub-keys that the renderer uses to assemble the global shell.

identity

The identity object stores your name or site title — used in the document <title> tag and as a fallback wherever the site needs to refer to itself generically.
The header key is a section object. Its data sub-object configures the logo, and its settings sub-object controls sticky behaviour.

header.data fields

header.settings fields

The logoHighlight field is the short identifier that appears in the coloured logo tile. Use two or three characters — typically your initials.
Set sticky: true to keep your name and navigation in view as readers scroll through long blog posts or case studies. Set it to false for a cleaner, more editorial feel.
The footer key is also a section object. Its data sub-object controls all footer content including brand text, description, copyright, navigation links, and social icons. Each entry in the social array has four fields:
Only github, linkedin, and rss are supported icon values. Using any other string will render no icon. If you need additional social networks, add the icon to the icon registry in src/components/icons/ before referencing it here.

Full site.json Example


src/data/config/menu.json

This file defines two navigation menus: main (the top-bar navigation) and footer (the footer link row).

main

The main array controls which links appear in the site header. Items render in the order they appear in the array. Use isCta: true on one item — typically a “Contact” link — to create a visual call-to-action in the nav bar.
The footer array defines the link row in the site footer. It follows the same shape as a main item but isCta is not used here.

Full menu.json Example


Applying Changes

1

Edit the config file(s)

Open src/data/config/site.json or src/data/config/menu.json in your editor and make your changes.
2

Rebuild the site

Run the build command to bake the updated config into public/:
To preview changes without a full production build, use the dev server:
3

Or use Studio with Save2Repo

If you are editing through the visual Studio at /admin and Save2Repo is active, saving any config change writes the JSON file and triggers an automatic bake. No manual build step is required.
Config changes — especially to menu.json — affect every page simultaneously. Always preview your changes locally with npm run dev before pushing to production to confirm the navigation looks correct across all breakpoints.