Major changes: - Full UI redesign with Vuetify 3 (dark theme, modern components) - Sidebar navigation with gradient logo - Redesigned player controls with Material Design icons - New room cards, track lists, and filter UI with chips - Modern auth pages with centered cards Configuration improvements: - Centralized all settings in root .env file - Removed redundant backend/.env and frontend/.env files - Increased file upload limit to 100MB (nginx + backend) - Added build args for Vite environment variables - Frontend now uses relative paths (better for domain deployment) UI Components updated: - App.vue: v-navigation-drawer with sidebar - MiniPlayer: v-footer with modern controls - Queue: v-list with styled items - RoomView: improved filters with clickable chips - All views: Vuetify cards, buttons, text fields 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
65 lines
1.3 KiB
Python
65 lines
1.3 KiB
Python
from pydantic import BaseModel
|
|
from uuid import UUID
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
from .user import UserResponse
|
|
from .track import TrackResponse
|
|
|
|
|
|
class RoomCreate(BaseModel):
|
|
name: str
|
|
|
|
|
|
class RoomResponse(BaseModel):
|
|
id: UUID
|
|
name: str
|
|
owner_id: UUID
|
|
current_track_id: Optional[UUID] = None
|
|
playback_position: int
|
|
is_playing: bool
|
|
created_at: datetime
|
|
participants_count: int = 0
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class RoomDetailResponse(BaseModel):
|
|
id: UUID
|
|
name: str
|
|
owner: UserResponse
|
|
current_track: Optional[TrackResponse] = None
|
|
playback_position: int
|
|
is_playing: bool
|
|
created_at: datetime
|
|
participants: list[UserResponse] = []
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class PlayerAction(BaseModel):
|
|
action: str # play, pause, seek, next, prev
|
|
position: Optional[int] = None # for seek
|
|
|
|
|
|
class QueueAdd(BaseModel):
|
|
track_id: UUID
|
|
|
|
|
|
class QueueAddMultiple(BaseModel):
|
|
track_ids: list[UUID]
|
|
|
|
|
|
class QueueItemResponse(BaseModel):
|
|
track: "TrackResponse"
|
|
added_by: UUID
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# Import at the end to avoid circular imports
|
|
from .track import TrackResponse
|
|
QueueItemResponse.model_rebuild()
|