package templates import "fmt" templ AdminSettings(user User, systemConfig map[string]string, scanSettings ScanSettingsData, errorMessage string) { System Settings - Bookhoard @Header(user, "/admin/settings")
@Icon("gear", "h-5 w-5")

System Settings

Configure your Bookhoard instance

if errorMessage != "" {
@Icon("alert", "h-5 w-5 shrink-0 mt-0.5") { errorMessage }
}
@Icon("globe", "h-5 w-5 shrink-0")

Base URL

The public URL of your Bookhoard instance (e.g., https://books.example.com). Used for device sync, OPDS, and API endpoints.

@Icon("clock", "h-5 w-5 shrink-0")

System Defaults

Default timezone for users who haven't set their own.

@Icon("external", "h-5 w-5 shrink-0")

URL Paths

OPDS: { systemConfig["base_url"] }/opds

API: { systemConfig["base_url"] }/api

Device Sync: { systemConfig["base_url"] }/api/sync

@ScanSettingsSection(scanSettings)
@Icon("info", "h-5 w-5 shrink-0")

System Information

These values are hardcoded and require a code change to modify.

Session Duration 7 days
Password Requirements 8+ chars, upper/lower/number/special
Login Lockout 5 attempts / 15 min
Auth Rate Limit 10 requests/min
Device Rate Limits Sync 60/min, Progress 120/min, Metadata 30/min
Sync Queue Every 5s, batch of 50
Annotation Tombstone TTL 30 days
Worker Pool 3 workers, queue cap 100
OPDS Page Size 50 per page (max 200)
Conversion Cache TTL 24 hours
CORS Origins *
} templ ScanSettingsSection(scanSettings ScanSettingsData) {
@Icon("refresh", "h-5 w-5 shrink-0")

Scanning

Watch libraries for file changes on startup

How often to poll libraries for changes (1–3600 seconds). Default: 60.

}