Commit graph

127 commits

Author SHA1 Message Date
senke
6ffaeff33f [BE-SVC-003] be-svc: Implement background job queue 2025-12-24 16:08:51 +01:00
senke
16262a7b8f [BE-SVC-002] be-svc: Implement rate limiting per user 2025-12-24 16:04:36 +01:00
senke
ef0f85ecf1 [BE-SVC-001] be-svc: Implement caching layer for frequently accessed data 2025-12-24 16:02:16 +01:00
senke
958583d5b6 [BE-DB-018] be-db: Add database performance monitoring 2025-12-24 15:58:48 +01:00
senke
43c4addd1d [BE-DB-017] be-db: Add database migration rollback tests 2025-12-24 15:57:19 +01:00
senke
4d3ea2461d [BE-DB-016] be-db: Add database backup strategy 2025-12-24 15:55:46 +01:00
senke
efc89128f1 [BE-DB-015] be-db: Optimize database connection pooling 2025-12-24 15:53:19 +01:00
senke
ab2e0921c9 [BE-DB-014] be-db: Add database triggers for audit logging 2025-12-24 15:47:38 +01:00
senke
379585fcb1 [BE-DB-013] be-db: Add database views for common queries 2025-12-24 15:46:29 +01:00
senke
58a5a27d56 [BE-DB-012] be-db: Create migration for analytics_events table (already exists) 2025-12-24 15:45:17 +01:00
senke
aff0a733d0 [BE-DB-011] be-db: Add database constraints for data validation 2025-12-24 15:43:52 +01:00
senke
2d9accbc8a [BE-DB-010] be-db: Add composite indexes for common queries 2025-12-24 15:14:17 +01:00
senke
7dcd822afc [BE-DB-009] be-db: Add indexes for search queries 2025-12-24 15:13:03 +01:00
senke
7d45ad65fa [BE-DB-008] be-db: Create migration for notifications table 2025-12-24 15:12:11 +01:00
senke
0d60b0262a [BE-DB-007] be-db: Create migration for user_blocks table 2025-12-24 15:11:32 +01:00
senke
eb5b9f6483 [BE-DB-006] be-db: Create migration for user_follows table 2025-12-24 15:10:34 +01:00
senke
6795191696 [BE-DB-005] be-db: Create migration for playlist_share_link table 2025-12-24 15:09:44 +01:00
senke
41f3ce3c00 [BE-DB-004] be-db: Add created_at and updated_at timestamps to all models 2025-12-24 15:08:43 +01:00
senke
f31cf1380f [BE-DB-003] be-db: Add soft delete support to all models 2025-12-24 15:07:25 +01:00
senke
32b5f51c38 [BE-API-042] be-api: Implement OAuth callback endpoint 2025-12-24 15:05:40 +01:00
senke
e0871341ed [BE-API-041] be-api: Implement user delete endpoint with soft delete support 2025-12-24 15:03:21 +01:00
senke
b32cfedc23 [BE-API-039] be-api: Implement marketplace order details endpoint 2025-12-24 15:00:32 +01:00
senke
f096ba9d75 [BE-API-038] be-api: Implement marketplace order list endpoint 2025-12-24 14:50:39 +01:00
senke
ccad394dc7 [BE-API-037] be-api: Implement marketplace product update endpoint 2025-12-24 14:49:41 +01:00
senke
3128677ec5 [BE-API-036] be-api: Implement track analytics dashboard endpoint 2025-12-24 14:48:28 +01:00
senke
c940f44b0b [BE-API-035] be-api: Implement analytics events endpoint 2025-12-24 14:47:12 +01:00
senke
a4d00e7e57 [BE-API-026] be-api: Implement track quota endpoint validation 2025-12-24 14:45:12 +01:00
senke
943562a55f [BE-API-025] be-api: Implement upload resume endpoint validation 2025-12-24 14:42:52 +01:00
senke
739ee08b40 [BE-API-005] be-api: Implement playlist recommendations endpoint 2025-12-24 14:41:33 +01:00
senke
b1c1395c76 [FE-COMP-004] fe-comp: Add confirmation dialogs for destructive actions
- Created reusable ConfirmationDialog component for destructive actions
- Replaced native confirm() dialogs with ConfirmationDialog in ChatSidebar (leave room, delete room)
- Replaced native confirm() dialogs with ConfirmationDialog in RolesPage (delete role)
- Replaced Dialog with ConfirmationDialog in PlaylistActions (delete playlist)
- Replaced window.confirm() with ConfirmationDialog in SessionsPage (revoke session, revoke all sessions)
- All destructive actions now use consistent confirmation dialogs
- Confirmation dialogs include proper messaging, loading states, and variant support
- Improved UX with better visual feedback and clearer action descriptions
2025-12-24 14:38:55 +01:00
senke
47249693b3 [FE-COMP-003] fe-comp: Add empty states to all list views
- Created reusable EmptyState component with icon, title, description, and action support
- Improved empty state in PlaylistList with better messaging and icons
- Improved empty states in UserProfilePage for tracks and playlists tabs
- Added contextual messages based on whether viewing own profile or others
- Added helpful descriptions and icons to all empty states
- Empty states now provide clear guidance on what users can do next
- All list views now have consistent and helpful empty state messaging
2025-12-24 14:33:20 +01:00
senke
c0160b7e1a [FE-COMP-002] fe-comp: Add error boundaries to all pages
- Added ErrorBoundary to all public routes (login, register, forgot-password, verify-email, reset-password)
- Added ErrorBoundary to public user profile page (/u/:username)
- Added ErrorBoundary to protected routes: dashboard, marketplace, chat
- Added ErrorBoundary to settings/sessions route
- Added ErrorBoundary to admin/roles route
- Added ErrorBoundary to tracks/:id route
- Added ErrorBoundary to playlists/* route
- Added ErrorBoundary to search route
- Added ErrorBoundary to notifications route
- Added ErrorBoundary to error pages (404, 500)
- All pages now have error boundaries for graceful error handling
- Error boundaries provide fallback UI with retry and home navigation options
2025-12-24 14:31:28 +01:00
senke
a1e6fcfdcb [FE-COMP-001] fe-comp: Add loading states to all async operations
- Created ButtonLoading component for consistent loading button pattern
- Created comprehensive loading states pattern guide
- Documented best practices for loading states in async operations
- Identified and documented existing loading state implementations
- Provided patterns for form submissions, data fetching, mutations, and skeleton loaders
- Created checklist for implementing loading states
- Documented examples from existing codebase

Most components already have loading states implemented. Pattern guide ensures consistency for future implementations.
2025-12-24 13:25:10 +01:00
senke
b3eb9cee17 [FE-PAGE-014] fe-page: Add Notifications page
- Created dedicated Notifications page with full notification management
- Added notification service with API integration (get, mark as read, mark all as read)
- Added filtering by status (all/unread/read) and type (message/track/mention/system/etc)
- Added mark as read functionality for individual notifications
- Added mark all as read functionality
- Added notification type icons and labels
- Added notification timestamps with relative time formatting
- Added notification links support for navigation
- Added empty states for no notifications
- Added loading and error states
- Integrated with backend notification APIs
- Added route /notifications to router
- Added lazy loading for NotificationsPage component
- Added visual distinction for unread notifications (badge, background)
- Added notification type badges
2025-12-24 13:22:31 +01:00
senke
c81408c4ca [FE-PAGE-013] fe-page: Add Search page
- Created dedicated Search page with unified search interface
- Added search functionality for tracks, playlists, and users
- Implemented tabs for filtering results by type (All/Tracks/Playlists/Users)
- Added search query debouncing for performance
- Added URL query parameter synchronization (q, type)
- Added pagination for each result type
- Added empty states for no query and no results
- Added loading states for all search operations
- Added error handling for search failures
- Integrated with existing search APIs (tracks, playlists, users)
- Added search service for user search API
- Added route /search to router
- Added lazy loading for SearchPage component
- Added result previews in All tab (6 items per type)
- Added View All buttons to navigate to specific tabs
2025-12-24 13:19:54 +01:00
senke
814443ae90 [FE-PAGE-012] fe-page: Complete Sessions page implementation
- Added user agent parser to extract device information (OS, browser, device type)
- Added device information display with formatted device details
- Added location information display (with support for private IP detection)
- Enhanced session cards with device type badges and detailed info
- Improved device icon selection based on device type (mobile/tablet/desktop)
- Added formatted device info display (OS, browser, versions)
- Added location display with MapPin icon
- Added device type badge (mobile/tablet/desktop)
- Improved visual hierarchy with better spacing and badges
- Maintained existing session management actions (revoke, revoke all)
2025-12-24 13:16:32 +01:00
senke
31e81cd853 [FE-PAGE-011] fe-page: Complete Roles page implementation
- Added CreateRoleModal for creating new roles
- Added EditRoleModal for editing existing roles
- Added AssignRoleModal for assigning roles to users
- Fixed roleService type issues (roleId from number to string)
- Enhanced RolesPage with create/edit/assign functionality
- Added UI section for assigning roles to users by ID
- Integrated all modals with existing role management
- Added proper form validation and error handling
- Added loading states for all async operations
- Added display of user current roles in assign modal
2025-12-24 13:13:54 +01:00
senke
b83abe2dfd [FE-PAGE-010] fe-page: Complete User Profile page (public)
- Added user tracks display with grid layout and pagination
- Added user playlists display with grid layout and pagination
- Added stats section showing tracks, playlists, and followers count
- Implemented tabs for switching between tracks and playlists
- Enhanced FollowButton with API integration (follow/unfollow)
- Added follow/unfollow API functions in profileService
- Added followers/following API functions (getFollowers, getFollowing)
- Added View All links for tracks and playlists when count > 12
- Improved profile layout with better organization
- Added empty states for tracks and playlists sections
2025-12-24 13:09:30 +01:00
senke
af06339290 [FE-PAGE-009] fe-page: Complete Playlist List page implementation
- Added server-side search using searchPlaylists API
- Added filtering: visibility (public/private), owner (all/mine/others)
- Added client-side sorting: by date, title, track count (asc/desc)
- Enhanced filter UI with collapsible filters panel
- Added sort controls with field selector and order toggle
- Integrated search API when search query or filters are active
- Maintained existing bulk operations (delete, share, export)
- Added clear filters button when filters are active
- Improved UX with filter badges and active state indicators
2025-12-24 13:05:21 +01:00
senke
ab42949a98 [FE-PAGE-008] fe-page: Complete Playlist Detail page implementation
- Added collaborator management UI with AddCollaboratorModal
- Added sharing functionality with SharePlaylistModal
- Added recommendations section using PlaylistRecommendations component
- Integrated CollaboratorList component in tabs
- Organized content in tabs (Tracks, Collaborators, Recommendations)
- Enhanced share button to open share modal with token generation
- Added Add Collaborator button for playlist owners/admins
- Integrated existing components: CollaboratorList, PlaylistRecommendations
2025-12-24 13:02:32 +01:00
senke
ee76e8516a [FE-PAGE-007] fe-page: Complete Track Detail page implementation
- Added comments section with CommentSection component
- Added sharing functionality with ShareDialog component
- Added version history display using TrackHistory component
- Added analytics display using TrackStatsDisplay component
- Organized content in tabs (Comments, History)
- Enhanced share button to open share dialog with token generation
- Integrated comment creation, deletion, and pagination
- Added track statistics display (views, likes, comments, downloads, play time)
2025-12-24 12:57:49 +01:00
senke
2bacdac53c [FE-PAGE-006] fe-page: Complete Marketplace page implementation
- Added product browsing with pagination (page, limit, total_pages)
- Added product filtering: search, product type, price range
- Added cart functionality: add, remove, update quantity, checkout
- Created cartStore with Zustand and persistence
- Added Cart component with checkout functionality
- Enhanced ProductCard with Add to Cart button
- Added filter UI with collapsible filters panel
- Added search bar for product search
- Added pagination controls (Previous/Next)
- Updated marketplaceService to support filters and pagination
2025-12-24 12:54:20 +01:00
senke
db11efc6fa [FE-PAGE-005] fe-page: Complete Chat page implementation
- Added room management: create, join, leave, delete rooms
- Added CreateRoomDialog component for creating new rooms
- Added room actions menu (leave/delete) in ChatSidebar
- Added message search functionality with MessageSearch component
- Added search bar in ChatRoom with message highlighting
- Added TypingIndicator component (placeholder for future WebSocket integration)
- Enhanced ChatSidebar with room management UI
- Enhanced ChatRoom with search and typing indicators
2025-12-24 12:51:40 +01:00
senke
b1f0e39d87 [FE-PAGE-004] fe-page: Complete Settings page implementation
- Added Account Settings section with password change, data export, and account deletion
- Added Playback Settings section with audio quality, volume, crossfade, and autoplay controls
- Updated SettingsTabs to include Account and Playback tabs (5 tabs total)
- Added PlaybackSettings interface to types
- Integrated account management features (password change, data export, account deletion)
- Added audio playback controls (quality selector, volume slider, crossfade slider, autoplay toggle)
2025-12-24 12:48:28 +01:00
senke
daf1f92155 [FE-PAGE-003] fe-page: Complete Profile page implementation
- Added profile completion indicator with progress bar
- Added profile completion percentage and missing fields display
- Added social links management (Twitter, Instagram, Facebook, YouTube, Website)
- Improved bio editing with Textarea component and character counter
- Added social links display when not editing
- Added location field
- Updated UpdateProfileRequest interface to include social_links
- Integrated profile completion API endpoint
2025-12-24 12:41:34 +01:00
senke
94b363ebac [FE-PAGE-002] fe-page: Complete Library page implementation
- Added filtering by genre and format with dropdown selects
- Added sorting by date, title, and popularity with order toggle
- Added bulk operations: select multiple tracks, bulk delete, bulk update
- Added bulk mode toggle with selection checkboxes
- Added batch delete and batch update API functions
- Added pagination controls
- Improved UI with filter bar and sort dropdown
- Added toast notifications for operations
- Added select all/deselect all functionality
2025-12-24 12:38:25 +01:00
senke
a4b3cd9fa4 [FE-PAGE-001] fe-page: Complete Dashboard page implementation
- Created dashboardService.ts to fetch real stats and activity from API
- Created useDashboard hook for managing dashboard data
- Updated DashboardPage to use real data instead of hardcoded values
- Added loading states and skeletons for better UX
- Made quick actions functional with navigation
- Added activity timeline with real timestamps
- Formatted numbers with K/M suffixes for readability
- Added relative time formatting using date-fns
2025-12-24 12:35:38 +01:00
senke
0d888c85b9 [BE-SEC-014] be-sec: Implement secrets management
- Enhanced secrets management with environment-aware defaults
- Fixed RabbitMQ URL: no default credentials in production
- Added getRabbitMQURL with environment-aware logic
- Added ValidateRequiredSecrets to validate required secrets
- Added RequiredSecretKeys listing production-required secrets
- Added validation for RabbitMQ URL in production
- All secrets properly managed via environment variables
- No hardcoded secrets in production code
2025-12-24 12:30:18 +01:00
senke
3149817580 [BE-SEC-013] be-sec: Implement audit logging for security events
- Added comprehensive audit logging methods for security events
- LogPasswordChange, LogPasswordResetRequest, LogPasswordReset
- LogTwoFactorEnabled, LogTwoFactorDisabled, LogTwoFactorVerification
- LogAccessDenied, LogRoleChange, LogAccountLocked
- LogSecurityEvent for generic security events
- Integrated audit logging in password reset handlers
- All security events logged with IP, user agent, and metadata
2025-12-24 12:27:39 +01:00
senke
0cd500e468 [BE-SEC-011] be-sec: Implement security headers
- Enhanced security headers middleware with additional headers
- Added X-Permitted-Cross-Domain-Policies: none
- Added Cross-Origin-Embedder-Policy: require-corp
- Added Cross-Origin-Opener-Policy: same-origin
- Added Cross-Origin-Resource-Policy: same-origin
- Enhanced Permissions-Policy with additional restrictions
- Enhanced CSP with frame-ancestors directive
- HSTS now only set in production (not in development)
- Updated tests to verify all new headers
2025-12-24 12:24:54 +01:00