Fix admin interface issues and 404 errors

- Create adminEvents.js router to handle /api/admin/events endpoints
- Mount events router in admin.js to fix 404 errors
- Fix admin layout CSS - changed from static to flex layout
- Update AdminSidebar positioning from static to relative
- Add missing PUT endpoints for general and security settings
- Fix frontend environment variables in docker-compose.local.yml
- Add build args to Dockerfile.dev for environment variables
- Update CORS to accept requests from all dev servers
- Remove unused imports from SettingsPage

This fixes:
- Events page 404 error
- Admin layout misalignment (sidebar and content on different rows)
- Settings page not loading
- CORS issues between frontend and backend

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-07-07 08:40:26 +02:00
parent 024c8eac2d
commit f38a8ef598
10 changed files with 417 additions and 15 deletions
@@ -25,7 +25,7 @@ export const AdminLayout: React.FC = () => {
}
return (
<div className="min-h-screen bg-neutral-50">
<div className="min-h-screen bg-neutral-50 flex">
{/* Mobile sidebar backdrop */}
{sidebarOpen && (
<div
@@ -38,12 +38,12 @@ export const AdminLayout: React.FC = () => {
<AdminSidebar isOpen={sidebarOpen} onClose={() => setSidebarOpen(false)} />
{/* Main content */}
<div className="lg:pl-64">
<div className="flex-1 flex flex-col min-w-0">
{/* Header */}
<AdminHeader onMenuClick={() => setSidebarOpen(true)} />
{/* Page content */}
<main id="main-content" className="px-4 sm:px-6 lg:px-8 py-8">
<main id="main-content" className="flex-1 px-4 sm:px-6 lg:px-8 py-8">
<Outlet />
</main>
</div>
@@ -40,7 +40,7 @@ export const AdminSidebar: React.FC<AdminSidebarProps> = ({ isOpen, onClose }) =
return (
<div
className={`fixed inset-y-0 left-0 z-50 w-64 bg-white border-r border-neutral-200 transform transition-transform duration-200 ease-in-out lg:translate-x-0 lg:static ${
className={`fixed inset-y-0 left-0 z-50 w-64 bg-white border-r border-neutral-200 transform transition-transform duration-200 ease-in-out lg:relative lg:translate-x-0 ${
isOpen ? 'translate-x-0' : '-translate-x-full'
}`}
>
@@ -87,7 +87,6 @@ export const AdminSidebar: React.FC<AdminSidebarProps> = ({ isOpen, onClose }) =
{/* Storage Info */}
<StorageInfo />
</div>
</div>
</div>
);
+2 -6
View File
@@ -1,20 +1,16 @@
import React, { useState } from 'react';
import {
Save,
Shield,
HardDrive,
Bell,
Database,
Globe,
Key,
AlertCircle,
CheckCircle
AlertCircle
} from 'lucide-react';
import { toast } from 'react-toastify';
import { Button, Card, Input, Loading } from '../../components/common';
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { settingsService, type BrandingSettings, type ThemeSettings, type StorageInfo } from '../../services/settings.service';
import { settingsService } from '../../services/settings.service';
export const SettingsPage: React.FC = () => {
const [activeTab, setActiveTab] = useState<'general' | 'storage' | 'security'>('general');