feat: create admin dashboard with user preferences and library settings

- Add admin dashboard at /admin route consolidating all user settings
- Move user preferences (username, email, password, theme) from separate page
- Add ebook library preferences section with folder management
- Add scan settings (frequency and auto-scan toggle) with database persistence
- Create database migration for scan_frequency_minutes and auto_scan_enabled columns
- Add API endpoints for scan settings management:
  - PUT /api/library/scan-settings - Update scan preferences
  - GET /api/library/scan-settings - Get current scan settings
- Update dashboard navigation to link to admin dashboard
- Remove old preferences.html template (functionality moved to admin)
- Create Bruno API testing files for library endpoints
- Add real-time folder loading and management in admin interface
- Implement scan settings persistence and retrieval from database
This commit is contained in:
2026-01-23 09:38:40 -05:00
parent 2dba1d6eb9
commit 11621462f2
12 changed files with 551 additions and 192 deletions
+36
View File
@@ -0,0 +1,36 @@
meta {
name: Get Scan Settings
type: http
seq: 2
}
get {
url: {{base_url}}/api/library/scan-settings
body: none
auth: inherit
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Get Scan Settings
Retrieves the user's current ebook scanning settings.
**Method:** GET
**Endpoint:** /api/library/scan-settings
**Authentication:** Required
**Response:**
- `scan_frequency_minutes` (integer): Minutes between automatic scans
- `auto_scan_enabled` (boolean): Whether automatic scanning is enabled
**Status Codes:**
- 200: Success
- 401: Unauthorized
}
+47
View File
@@ -0,0 +1,47 @@
meta {
name: Update Scan Settings
type: http
seq: 1
}
put {
url: {{base_url}}/api/library/scan-settings
body: json
auth: inherit
}
body {
{
"scan_frequency_minutes": 60,
"auto_scan_enabled": true
}
}
settings {
encodeUrl: true
timeout: 0
}
docs {
## Update Scan Settings
Updates the user's ebook scanning settings.
**Method:** PUT
**Endpoint:** /api/library/scan-settings
**Authentication:** Required
**Request Body:**
- `scan_frequency_minutes` (integer, required): Minutes between automatic scans (15-1440)
- `auto_scan_enabled` (boolean, required): Whether automatic scanning is enabled
**Response:**
- `message` (string): Success message
**Status Codes:**
- 200: Success
- 400: Invalid settings
- 401: Unauthorized
}