feat(docs): migrate documentation site into monorepo (#5912)

This commit is contained in:
Thomas authored and GitHub committed 2026-06-11 18:48:39 +02:00
1 parent 3e464a76f2
commit 9e421c67bd
605 files changed
+26764 -219

No files matched your search

+16 -1
View File
@@ -5,6 +5,8 @@ import { XMLParser } from "fast-xml-parser";
import { z } from "zod/v4";
import { createDocumentationLink } from "./index";
import { integrationDocSlugs } from "./integration-doc-slugs";
import { widgetDocSlugs } from "./widget-doc-slugs";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
@@ -66,8 +68,21 @@ const main = async () => {
const sitemapXml = await fetchSitemapAsync();
const sitemapData = parseXml(sitemapXml);
const paths = mapSitemapXmlToPaths(sitemapData);
// Adding sitemap as it's not in the sitemap.xml and we need it for this file
paths.push("/sitemap.xml");
const slugMapPaths = [
...Object.values(integrationDocSlugs)
.filter(Boolean)
.map((slug) => `/docs/integrations/${slug}`),
...Object.values(widgetDocSlugs)
.filter(Boolean)
.map((slug) => `/docs/widgets/${slug}`),
];
for (const p of slugMapPaths) {
if (!paths.includes(p)) {
paths.push(p);
}
}
const sitemapPathType = createSitemapPathType(paths);
await updateSitemapTypeFileAsync(sitemapPathType);
};
@@ -254,4 +254,100 @@ export type HomarrDocumentationPath =
| "/docs/widgets/video"
| "/docs/widgets/weather"
| ""
| "/sitemap.xml";
| "/sitemap.xml"
| "/docs/integrations/sabnzbd"
| "/docs/integrations/nzbget"
| "/docs/integrations/deluge"
| "/docs/integrations/transmission"
| "/docs/integrations/q-bittorent"
| "/docs/integrations/aria2"
| "/docs/integrations/slskd"
| "/docs/integrations/sonarr"
| "/docs/integrations/radarr"
| "/docs/integrations/lidarr"
| "/docs/integrations/readarr"
| "/docs/integrations/prowlarr"
| "/docs/integrations/jellyfin"
| "/docs/integrations/emby"
| "/docs/integrations/plex"
| "/docs/integrations/jellyseerr"
| "/docs/integrations/seerr"
| "/docs/integrations/overseerr"
| "/docs/integrations/pi-hole"
| "/docs/integrations/adguard-home"
| "/docs/integrations/technitium-dns"
| "/docs/integrations/home-assistant"
| "/docs/integrations/open-media-vault"
| "/docs/integrations/dash-dot"
| "/docs/integrations/glances"
| "/docs/integrations/tdarr"
| "/docs/integrations/proxmox"
| "/docs/integrations/nextcloud"
| "/docs/integrations/unifi-controller"
| "/docs/integrations/opnsense"
| "/docs/integrations/github"
| "/docs/integrations/docker-hub"
| "/docs/integrations/gitlab"
| "/docs/integrations/npm"
| "/docs/integrations/codeberg"
| "/docs/integrations/linux-server-io"
| "/docs/integrations/github-containerregistry"
| "/docs/integrations/quay"
| "/docs/integrations/ntfy"
| "/docs/integrations/ical"
| "/docs/integrations/anchor"
| "/docs/integrations/truenas"
| "/docs/integrations/unraid"
| "/docs/integrations/coolify"
| "/docs/integrations/search-ch"
| "/docs/integrations/immich"
| "/docs/integrations/paperless-ngx"
| "/docs/integrations/tracearr"
| "/docs/integrations/speedtest-tracker"
| "/docs/integrations/uptime-kuma"
| "/docs/integrations/audiobookshelf"
| "/docs/integrations/navidrome"
| "/docs/integrations/umami"
| "/docs/integrations/peanut"
| "/docs/widgets/clock"
| "/docs/widgets/weather"
| "/docs/widgets/app"
| "/docs/widgets/iframe"
| "/docs/widgets/video"
| "/docs/widgets/notebook"
| "/docs/widgets/anchor-note"
| "/docs/widgets/dns-hole-summary"
| "/docs/widgets/dns-hole-controls"
| "/docs/widgets/smart-home-entity-state"
| "/docs/widgets/smart-home-execute-automation"
| "/docs/widgets/stock-price"
| "/docs/widgets/media-server"
| "/docs/widgets/calendar"
| "/docs/widgets/downloads"
| "/docs/widgets/media-request-list"
| "/docs/widgets/media-request-stats"
| "/docs/widgets/media-transcoding"
| "/docs/widgets/minecraft-server-status"
| "/docs/widgets/network-controller-summary"
| "/docs/widgets/network-controller-status"
| "/docs/widgets/rss-feed"
| "/docs/widgets/bookmarks"
| "/docs/widgets/indexer-manager"
| "/docs/widgets/health-monitoring"
| "/docs/widgets/releases"
| "/docs/widgets/media-releases"
| "/docs/widgets/docker-containers"
| "/docs/widgets/firewall"
| "/docs/widgets/notifications"
| "/docs/widgets/system-resources"
| "/docs/widgets/coolify"
| "/docs/widgets/timetable"
| "/docs/widgets/immich-server-stats"
| "/docs/widgets/immich-album-carousel"
| "/docs/widgets/paperless-ngx"
| "/docs/widgets/tracearr"
| "/docs/widgets/speedtest-tracker"
| "/docs/widgets/uptime-kuma"
| "/docs/widgets/audio-stats"
| "/docs/widgets/umami"
| "/docs/widgets/ups";
@@ -0,0 +1,60 @@
import type { IntegrationKind } from "../integration";
export const integrationDocSlugs: Record<IntegrationKind, string | null> = {
sabNzbd: "sabnzbd",
nzbGet: "nzbget",
deluge: "deluge",
transmission: "transmission",
qBittorrent: "q-bittorent",
aria2: "aria2",
slskd: "slskd",
sonarr: "sonarr",
radarr: "radarr",
lidarr: "lidarr",
readarr: "readarr",
prowlarr: "prowlarr",
jellyfin: "jellyfin",
emby: "emby",
plex: "plex",
jellyseerr: "jellyseerr",
seerr: "seerr",
overseerr: "overseerr",
piHole: "pi-hole",
adGuardHome: "adguard-home",
technitiumDns: "technitium-dns",
homeAssistant: "home-assistant",
openmediavault: "open-media-vault",
dashDot: "dash-dot",
glances: "glances",
tdarr: "tdarr",
proxmox: "proxmox",
nextcloud: "nextcloud",
unifiController: "unifi-controller",
opnsense: "opnsense",
github: "github",
dockerHub: "docker-hub",
gitlab: "gitlab",
npm: "npm",
codeberg: "codeberg",
linuxServerIO: "linux-server-io",
gitHubContainerRegistry: "github-containerregistry",
quay: "quay",
ntfy: "ntfy",
ical: "ical",
anchor: "anchor",
truenas: "truenas",
unraid: "unraid",
coolify: "coolify",
searchCh: "search-ch",
immich: "immich",
paperlessNgx: "paperless-ngx",
tracearr: "tracearr",
speedtestTracker: "speedtest-tracker",
uptimeKuma: "uptime-kuma",
audiobookshelf: "audiobookshelf",
navidrome: "navidrome",
umami: "umami",
peaNut: "peanut",
beszel: null,
mock: null,
};
@@ -0,0 +1,52 @@
import type { WidgetKind } from "../widget";
export const widgetDocSlugs: Record<WidgetKind, string | null> = {
clock: "clock",
weather: "weather",
app: "app",
iframe: "iframe",
video: "video",
notebook: "notebook",
anchorNote: "anchor-note",
dnsHoleSummary: "dns-hole-summary",
dnsHoleControls: "dns-hole-controls",
"smartHome-entityState": "smart-home-entity-state",
"smartHome-executeAutomation": "smart-home-execute-automation",
stockPrice: "stock-price",
mediaServer: "media-server",
calendar: "calendar",
downloads: "downloads",
"mediaRequests-requestList": "media-request-list",
"mediaRequests-requestStats": "media-request-stats",
mediaTranscoding: "media-transcoding",
minecraftServerStatus: "minecraft-server-status",
networkControllerSummary: "network-controller-summary",
networkControllerStatus: "network-controller-status",
rssFeed: "rss-feed",
bookmarks: "bookmarks",
indexerManager: "indexer-manager",
healthMonitoring: "health-monitoring",
releases: "releases",
mediaReleases: "media-releases",
dockerContainers: "docker-containers",
firewall: "firewall",
notifications: "notifications",
systemResources: "system-resources",
coolify: "coolify",
systemDisks: null,
timetable: "timetable",
"immich-serverStats": "immich-server-stats",
"immich-albumCarousel": "immich-album-carousel",
paperlessNgx: "paperless-ngx",
tracearr: "tracearr",
speedtestTracker: "speedtest-tracker",
uptimeKuma: "uptime-kuma",
audioStats: "audio-stats",
umami: "umami",
ups: "ups",
beszelSystemTable: null,
beszelSystemGrid: null,
beszelAlerts: null,
beszelSystemStats: null,
customApi: null,
};