justin.deal/config/README.md

57 lines
1.7 KiB
Markdown
Raw Normal View History

# 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.