Add comprehensive backend features and mobile UI improvements

Backend:
- Add 2FA authentication with TOTP support
- Add API keys management system
- Add audit logging for security events
- Add file upload/management system
- Add notifications system with preferences
- Add session management
- Add webhooks integration
- Add analytics endpoints
- Add export functionality
- Add password policy enforcement
- Add new database migrations for core tables

Frontend:
- Add module position system (top/bottom sidebar sections)
- Add search and notifications module configuration tabs
- Add mobile logo replacing hamburger menu
- Center page title absolutely when no tabs present
- Align sidebar footer toggles with navigation items
- Add lighter icon color in dark theme for mobile
- Add API keys management page
- Add notifications page with context
- Add admin analytics and audit logs pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-17 22:27:32 +01:00
parent f698aa4d51
commit 8c4a555b88
76 changed files with 9751 additions and 323 deletions

View File

@@ -10,6 +10,10 @@
"username": "Username",
"password": "Password",
"email": "Email",
"twoFactorCode": "2FA code",
"twoFactorPrompt": "Enter the 6-digit code from your authenticator app (or an 8-character backup code).",
"verifyCode": "Verify",
"backToLogin": "Back to login",
"loginTitle": "Login",
"registerTitle": "Register",
"alreadyHaveAccount": "Already have an account? Login",
@@ -27,6 +31,8 @@
},
"sidebar": {
"dashboard": "Dashboard",
"search": "Search",
"notifications": "Notifications",
"feature1": "Feature 1",
"feature2": "Feature 2",
"feature3": "Feature 3",
@@ -59,7 +65,14 @@
"configTab": "Configuration",
"orderSection": "Sidebar Order",
"orderDesc": "Drag to reorder features in the sidebar",
"applyOrder": "Apply"
"applyOrder": "Apply",
"visibility": "Visibility",
"topSection": "Main Section",
"bottomSection": "Bottom Section",
"moveToTop": "Move to top",
"moveToBottom": "Move to bottom",
"noModulesTop": "No modules in this section",
"noModulesBottom": "No modules in this section"
},
"sourcesPage": {
"title": "Sources",
@@ -306,13 +319,103 @@
"languageDesc": "Select your preferred language",
"english": "English",
"italian": "Italiano",
"preferences": "Preferences",
"security": "Security",
"enabled": "Enabled",
"disabled": "Disabled",
"twoFactorTitle": "Two-factor authentication (2FA)",
"twoFactorDesc": "Protect your account with TOTP codes from an authenticator app.",
"enable2fa": "Enable 2FA",
"qrCodeAlt": "2FA QR code",
"secret": "Secret",
"verificationCode": "Verification code",
"verifyEnable2fa": "Verify and enable",
"backupCodes": "Backup codes",
"backupCodesDesc": "Generate new backup codes (requires a valid code).",
"backupCodesSaveHint": "Save these codes in a safe place. Each code can be used once to access your account if you lose your authenticator.",
"regenerateBackupCodes": "Regenerate backup codes",
"disable2fa": "Disable 2FA",
"disable2faDesc": "Disable two-factor authentication (requires your password and a valid code).",
"disable2faConfirm": "Disable",
"sessionsTitle": "Active sessions",
"sessionsDesc": "View and revoke sessions on other devices.",
"revokeAllOtherSessions": "Revoke all other sessions",
"revokeSession": "Revoke",
"currentSession": "Current",
"inactiveSession": "Inactive",
"sessionsEmpty": "No sessions found",
"unknownDevice": "Unknown device",
"unknownBrowser": "Unknown browser",
"unknownOs": "Unknown OS",
"lastActive": "Last active",
"comingSoon": "User settings will be available soon...",
"placeholderTitle": "Settings"
},
"notificationsPage": {
"title": "Notifications",
"unreadOnly": "Unread only",
"markAllRead": "Mark all as read",
"deleteRead": "Delete read",
"markRead": "Mark as read",
"empty": "No notifications",
"loadError": "Failed to load notifications"
},
"analyticsPage": {
"title": "Analytics",
"usersTotal": "Total users",
"usersActive": "Active users",
"usersNew": "New users",
"sessionsActive": "Active sessions",
"logins24h": "Logins (24h)",
"failedLogins24h": "Failed (24h)",
"notificationsUnread": "Unread notifications",
"userActivity7d": "User activity (7d)",
"actions24h": "Actions (24h)",
"generatedAt": "Generated at"
},
"auditPage": {
"title": "Audit Log",
"username": "Username",
"action": "Action",
"resourceType": "Resource type",
"anyStatus": "Any status",
"statusSuccess": "Success",
"statusFailure": "Failure",
"statusPending": "Pending",
"statusError": "Error",
"empty": "No audit log entries",
"time": "Time",
"user": "User",
"resource": "Resource",
"status": "Status",
"ip": "IP",
"prev": "Prev",
"next": "Next",
"page": "Page"
},
"apiKeysPage": {
"title": "API Keys",
"createTitle": "Create API key",
"createDesc": "Generate an API key for external API access. The key is shown only once.",
"namePlaceholder": "Key name (e.g. CI, integration, script)",
"createButton": "Create",
"showOnce": "Shown once",
"copy": "Copy",
"listTitle": "Your keys",
"empty": "No API keys yet",
"name": "Name",
"prefix": "Prefix",
"status": "Status",
"lastUsed": "Last used",
"usage": "Usage",
"actions": "Actions",
"revoke": "Revoke",
"revoked": "Revoked"
},
"feature1": {
"title": "Feature 1",
"subtitle": "Feature 1 management",
"comingSoon": "Feature coming soon...",
"management": "Feature 1 Management"
}
}
}