feat: Complete Command Center redesign + fix notify API
Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled

DASHBOARD REDESIGN (Award-winning UI):
- New hero section with gradient icon and tier badge
- Modern stats grid with gradient backgrounds
- Redesigned domain cards with improved spacing
- Better visual hierarchy and typography
- Smooth animations and transitions
- Quick links section at bottom
- Redesigned all modals with rounded corners
- Better color system for ROI indicators
- Improved mobile responsiveness

API FIX:
- Fixed PATCH /domains/{id}/notify endpoint
- Now accepts body with 'notify' field instead of query param
- Resolves 422 Unprocessable Entity error

UI IMPROVEMENTS:
- Added BellOff icon for disabled notifications
- Better loading states with descriptive text
- Improved empty states with larger icons
- Gradient backgrounds for positive/negative values
- Better button hover states
This commit is contained in:
yves.gugger
2025-12-09 09:13:51 +01:00
parent 2214d65f15
commit b2c773b94c
2 changed files with 509 additions and 383 deletions

View File

@ -3,6 +3,7 @@ from datetime import datetime
from math import ceil from math import ceil
from fastapi import APIRouter, HTTPException, status, Query from fastapi import APIRouter, HTTPException, status, Query
from pydantic import BaseModel
from sqlalchemy import select, func from sqlalchemy import select, func
from app.api.deps import Database, CurrentUser from app.api.deps import Database, CurrentUser
@ -212,10 +213,15 @@ async def refresh_domain(
return domain return domain
class NotifyUpdate(BaseModel):
"""Schema for updating notification settings."""
notify: bool
@router.patch("/{domain_id}/notify", response_model=DomainResponse) @router.patch("/{domain_id}/notify", response_model=DomainResponse)
async def update_notification_settings( async def update_notification_settings(
domain_id: int, domain_id: int,
notify_on_available: bool, data: NotifyUpdate,
current_user: CurrentUser, current_user: CurrentUser,
db: Database, db: Database,
): ):
@ -234,7 +240,7 @@ async def update_notification_settings(
detail="Domain not found", detail="Domain not found",
) )
domain.notify_on_available = notify_on_available domain.notify_on_available = data.notify
await db.commit() await db.commit()
await db.refresh(domain) await db.refresh(domain)

File diff suppressed because it is too large Load Diff