# Site Configuration This directory contains configuration files for the website. Instead of hardcoding values in the TypeScript files, these JSON files are used to make the site more configurable. ## Available Configuration Files - **site.json**: Contains global site metadata, menu structure, and text strings - **services.json**: Contains homelab services organized by category - **socials.json**: Contains social media profile configurations (the single source of truth for all social profiles) ## How to Use To modify any configuration values, simply edit the appropriate JSON file. The changes will be reflected in the application without having to modify any TypeScript code. ### Example: Updating Menu Items To add or remove a menu item, edit the `menu` section in `site.json`: ```json "menu": { "home": "/", "about": "/about", "blog": "/blog", "projects": "/projects", "homelab": "/homelab", "code": "https://code.justin.deal", "new-page": "/new-page" } ``` ### Example: Adding a New Service To add a new service, find the appropriate category in `services.json` and add a new item: ```json "Media": [ { "name": "Jellyfin", "link": "https://watch.justin.deal", "icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/jellyfin.svg", "alt": "Jellyfin", "tags": [] }, { "name": "Plex", "link": "https://plex.justin.deal", "icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/plex.svg", "alt": "Plex Media Server", "tags": ["media", "streaming"] } ] ``` ## Technical Implementation The configuration files are loaded from this directory using the `loadConfig` function in `src/lib/config.ts`. The function reads the JSON files, parses them, and caches the results to avoid reading the files multiple times.