48d6584b7d
ci/woodpecker/push/woodpecker Pipeline was successful
- Move app links to dedicated /apps page with grouped icon tiles - Download all icons locally to public/icons/ (no CDN dependency) - Add favicon and replace header logo-mark with custom icon - Fix icon names: synology, termix, docsight-light, dbgate (png) - Add nav tabs in header for Dashboard/Apps routing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
73 lines
3.8 KiB
TypeScript
73 lines
3.8 KiB
TypeScript
const ICONS = '/icons'
|
|
|
|
export interface AppLink {
|
|
name: string
|
|
url: string
|
|
icon: string
|
|
}
|
|
|
|
export interface AppGroup {
|
|
name: string
|
|
apps: AppLink[]
|
|
}
|
|
|
|
export const appGroups: AppGroup[] = [
|
|
{
|
|
name: 'Infrastructure',
|
|
apps: [
|
|
{ name: 'Proxmox', url: 'https://proxmox.syco.me', icon: `${ICONS}/proxmox.svg` },
|
|
{ name: 'Synology NAS', url: 'https://nas.syco.me', icon: `${ICONS}/synology.svg` },
|
|
{ name: 'AdGuard Home', url: 'https://adguard.syco.me', icon: `${ICONS}/adguard-home.svg` },
|
|
{ name: 'Headscale', url: 'https://headscale.syco.me/admin', icon: `${ICONS}/headscale.svg` },
|
|
{ name: 'FritzBox', url: 'http://fritz.box', icon: `${ICONS}/Fritz!_Logo.svg.png` },
|
|
{ name: 'Portainer', url: 'https://portainer.syco.me', icon: `${ICONS}/portainer.svg` },
|
|
{ name: 'CrowdSec', url: 'https://crowdsec.syco.me', icon: `${ICONS}/crowdsec.svg` },
|
|
],
|
|
},
|
|
{
|
|
name: 'Auth & Access',
|
|
apps: [
|
|
{ name: 'Authentik', url: 'https://auth.syco.me', icon: `${ICONS}/authentik.svg` },
|
|
{ name: 'Vaultwarden', url: 'https://vaultwarden.syco.me', icon: `${ICONS}/vaultwarden.svg` },
|
|
{ name: 'Termix', url: 'https://termix.syco.me', icon: `${ICONS}/termix.svg` },
|
|
],
|
|
},
|
|
{
|
|
name: 'Media',
|
|
apps: [
|
|
{ name: 'Jellyfin', url: 'https://jellyfin.syco.me', icon: `${ICONS}/jellyfin.svg` },
|
|
{ name: 'Navidrome', url: 'https://music.syco.me', icon: `${ICONS}/navidrome.svg` },
|
|
{ name: 'Overseerr', url: 'https://overseerr.syco.me', icon: `${ICONS}/overseerr.svg` },
|
|
{ name: 'Radarr', url: 'https://radarr.syco.me', icon: `${ICONS}/radarr.svg` },
|
|
{ name: 'Sonarr', url: 'https://sonarr.syco.me', icon: `${ICONS}/sonarr.svg` },
|
|
{ name: 'Lidarr', url: 'https://lidarr.syco.me', icon: `${ICONS}/lidarr.svg` },
|
|
{ name: 'Prowlarr', url: 'https://prowlarr.syco.me', icon: `${ICONS}/prowlarr.svg` },
|
|
{ name: 'Bazarr', url: 'https://bazarr.syco.me', icon: `${ICONS}/bazarr.svg` },
|
|
{ name: 'qBittorrent', url: 'https://bittorrent.syco.me', icon: `${ICONS}/qbittorrent.svg` },
|
|
{ name: 'RomM', url: 'https://romm.syco.me', icon: `${ICONS}/romm.svg` },
|
|
{ name: 'Shoko', url: 'http://shoko.internal', icon: `${ICONS}/shoko-server.svg` },
|
|
],
|
|
},
|
|
{
|
|
name: 'Monitoring',
|
|
apps: [
|
|
{ name: 'Grafana', url: 'https://grafana.syco.me', icon: `${ICONS}/grafana.svg` },
|
|
{ name: 'Uptime Kuma', url: 'https://uptime.syco.me', icon: `${ICONS}/uptime-kuma.svg` },
|
|
{ name: 'Update Dashboard', url: 'https://update-dashboard.syco.me', icon: `${ICONS}/linux-update-dashboard.svg` },
|
|
],
|
|
},
|
|
{
|
|
name: 'Dev & Tools',
|
|
apps: [
|
|
{ name: 'Gitea', url: 'https://git.syco.me', icon: `${ICONS}/gitea.svg` },
|
|
{ name: 'Woodpecker', url: 'https://woodpecker.syco.me', icon: `${ICONS}/woodpecker-ci.svg` },
|
|
{ name: 'DbGate', url: 'https://dbgate.syco.me', icon: `${ICONS}/dbgate.png` },
|
|
{ name: 'IT-Tools', url: 'https://it-tools.syco.me', icon: `${ICONS}/it-tools.svg` },
|
|
{ name: 'Docsight', url: 'http://docsight.internal', icon: `${ICONS}/docsight-light.svg` },
|
|
{ name: 'Firefly III', url: 'https://firefly.syco.me', icon: `${ICONS}/firefly-iii.svg` },
|
|
{ name: 'Copyparty', url: 'https://copyparty.syco.me', icon: `${ICONS}/copyparty.svg` },
|
|
{ name: 'Yu-Gi-Oh', url: 'https://yugioh.syco.me', icon: `${ICONS}/yugiohCard.jpg` },
|
|
],
|
|
},
|
|
]
|