Commit graph

260 commits

Author SHA1 Message Date
senke
d91f6e74a0 [INT-015] int: Add file upload format standardization 2025-12-25 15:40:01 +01:00
senke
1f62a0ff88 [INT-014] int: Add WebSocket message format standardization 2025-12-25 15:35:38 +01:00
senke
f75140c490 [INT-013] int: Add API rate limiting communication 2025-12-25 15:30:01 +01:00
senke
36e4a3b398 [INT-012] int: Add request/response validation 2025-12-25 15:27:21 +01:00
senke
28e5c62968 [INT-011] int: Add API versioning strategy 2025-12-25 15:25:33 +01:00
senke
5bdf3abbb4 [INT-010] int: Add API documentation (OpenAPI/Swagger) 2025-12-25 15:23:19 +01:00
senke
acae972bb9 [INT-009] int: Add API contract tests 2025-12-25 15:18:44 +01:00
senke
72f7e9e058 [INT-008] int: Standardize date/time formats 2025-12-25 15:16:38 +01:00
senke
54f2f6735d [INT-007] int: Standardize pagination format 2025-12-25 15:14:26 +01:00
senke
113509254d [INT-006] int: Standardize error response format 2025-12-25 15:11:24 +01:00
senke
ac688809de [INT-005] int: Verify all backend endpoints have frontend usage 2025-12-25 15:08:30 +01:00
senke
fecb4ba275 [INT-004] int: Verify all frontend API calls have backend endpoints 2025-12-25 15:05:48 +01:00
senke
14ed9d8371 [FE-TYPE-014] fe-type: Add strict TypeScript mode 2025-12-25 15:04:01 +01:00
senke
3ee504439a [FE-TYPE-013] fe-type: Add type safety for components 2025-12-25 15:00:35 +01:00
senke
0425a3a504 [FE-TYPE-012] fe-type: Add type safety for hooks 2025-12-25 14:57:57 +01:00
senke
e296e8a88b [FE-TYPE-011] fe-type: Add type safety for stores 2025-12-25 14:54:40 +01:00
senke
118e67304e [FE-TYPE-010] fe-type: Add type safety for API client
- Created fully typed API client wrapper (typedClient.ts):
  * TypedApiClient interface with fully typed methods
  * typedApiClient implementation wrapping apiClient
  * TypedRequestConfig extending InternalAxiosRequestConfig
  * TypedApiRequestBuilder class for type-safe requests
- Added helper types:
  * ApiResponseData: Extract data from ApiResponse
  * UnwrappedApiResponse: Remove ApiResponse wrapper
- Added helper functions:
  * createTypedRequest: Create typed request builder
  * isApiResponseWrapper: Type guard for ApiResponse
  * extractApiData: Extract data from response
- Ensures full type safety for all API client methods
2025-12-25 14:48:35 +01:00
senke
3e36e75385 [FE-TYPE-009] fe-type: Add type definitions for query params
- Created comprehensive query parameter types (queryParams.ts):
  * Pagination: PaginationQueryParams
  * Sorting: SortQueryParams
  * Search: SearchQueryParams, TrackSearchQueryParams, PlaylistSearchQueryParams, UserSearchQueryParams
  * Lists: TrackListQueryParams, PlaylistListQueryParams, ConversationListQueryParams, MessageListQueryParams
  * Filters: LibraryQueryParams, MarketplaceQueryParams, NotificationQueryParams, AuditLogQueryParams
  * Analytics: AnalyticsQueryParams
  * Auth: ResetPasswordQueryParams, VerifyEmailQueryParams, OAuthCallbackQueryParams
  * Utility: ShareQueryParams, EmbedQueryParams, AdminQueryParams, SettingsQueryParams
- Added helper functions: parseQueryParams, buildQueryString, convertQueryParams
- Added parsing helpers: parsePaginationParams, parseBooleanParam, parseNumberParam
- Ensures type safety for all URL query string handling
2025-12-25 14:46:56 +01:00
senke
df4820a201 [FE-TYPE-008] fe-type: Add type definitions for route params
- Created comprehensive route parameter types (routes.ts):
  * Detail pages: TrackDetailParams, PlaylistDetailParams, UserProfileParams
  * Chat: ConversationDetailParams, MessageDetailParams
  * Settings: SessionDetailParams, SettingsParams
  * Admin: RoleDetailParams, AuditLogDetailParams, AdminParams
  * Auth: ResetPasswordParams, VerifyEmailParams, OAuthCallbackParams
  * Search/Filter: SearchParams, LibraryParams, MarketplaceParams
  * Generic: IdRouteParams, SlugRouteParams, PaginationParams, FilterParams
- Added type guards: hasIdParam, hasUsernameParam
- Added helper functions: extractRouteParams, extractQueryParams
- Ensures type safety for all route navigation and params
2025-12-25 14:45:10 +01:00
senke
6b422932d9 [FE-TYPE-007] fe-type: Add type definitions for form data
- Created comprehensive form data types (forms.ts):
  * Authentication: LoginFormData, RegisterFormData, ForgotPasswordFormData, ResetPasswordFormData
  * Profile: ProfileFormData
  * Content: PlaylistFormData, TrackUploadFormData, TrackEditFormData, CommentFormData
  * Utility: SearchFormData, SettingsFormData, ContactFormData, FeedbackFormData
  * Actions: ReportFormData, ShareFormData, InviteFormData, BulkActionFormData
  * Import/Export: ImportFormData, ExportFormData
  * Generic: FormField, FormState, FormValidationResult
- All types use Zod schema inference where applicable
- Ensures type safety for all form inputs and validation
2025-12-25 14:43:13 +01:00
senke
c2975f3603 [FE-TYPE-006] fe-type: Add type definitions for WebSocket messages
- Created comprehensive WebSocket message types (websocket.ts):
  * Chat messages: ChatMessageEvent, TypingIndicatorEvent, ReadReceiptEvent
  * User events: UserJoinedEvent, UserLeftEvent, ConversationUpdatedEvent
  * Outgoing requests: SendMessageRequest, JoinConversationRequest, etc.
  * Playback/streaming: PlaybackStateEvent, SubscribePlaybackRequest
  * Notifications: NotificationEvent
  * Errors: WebSocketErrorEvent
  * Ping/Pong: PingMessage, PongMessage
- Created union types: IncomingWebSocketMessage, OutgoingWebSocketMessage
- Added type guards for runtime validation
- Ensures type safety for all WebSocket communications
2025-12-25 14:42:04 +01:00
senke
a5da827a20 [FE-TYPE-005] fe-type: Add type definitions for all backend DTOs
- Created dto.ts with all backend DTO types:
  * RegisterRequest, RegisterResponse
  * LoginRequest, LoginResponse
  * UserResponse, TokenResponse
  * RefreshRequest, ResendVerificationRequest
  * ValidationError, ValidationErrors
- Updated api.ts to match backend DTOs:
  * Added password_confirm to RegisterRequest
  * Added remember_me to LoginRequest
  * Added requires_2fa to AuthResult/LoginResponse
  * Added value field to ValidationError details
- All types now match backend Go structs exactly
- Ensures type safety between frontend and backend
2025-12-25 14:40:35 +01:00
senke
d19173e0ba [FE-TYPE-004] fe-type: Add type guards for runtime type checking
- Created comprehensive type guard functions (typeGuards.ts) for:
  * User, Track, Playlist, Conversation, Message
  * Session, AuditLog, Notification
  * ApiError, ApiResponse, PaginationData
  * Arrays of all entity types
- Added utility type guards:
  * isUUID, isEmail, isISO8601Date, isURL
  * isNonEmptyString, isPositiveNumber, isNonNegativeNumber
  * isPlainObject, isArrayOf, isNotNull, isDefined
  * isNumber, isBoolean, isString
- Enables safe type narrowing in TypeScript
- Improves runtime type safety throughout the application
- Comprehensive test suite (44 tests, all passing)
- Allows TypeScript to narrow types safely at runtime
2025-12-25 14:38:55 +01:00
senke
479d972559 [FE-TYPE-003] fe-type: Add Zod schemas for all API requests
- Created comprehensive Zod schemas (apiRequestSchemas.ts) for:
  * LoginRequest, RegisterRequest, CreateUserRequest
  * UpdateUserRequest, UpdateProfileRequest
  * SendMessageRequest, UpdateMessageRequest
  * CreateConversationRequest, UpdateConversationRequest
  * UploadTrackRequest, UpdateTrackRequest
  * PaginationParams and list/search request types
- Added validation utilities:
  * validateApiRequest: Validate requests before sending
  * safeValidateApiRequest: Safe validation with error handling
  * validateApiRequestWithError: Validation with custom error handler
- Integrated validation into API client request interceptor
- Enhanced validatedApiClient with request validation support
- Automatic validation prevents invalid requests from being sent
- Comprehensive test suite (19 tests, all passing)
- Ensures runtime type safety for all API requests
2025-12-25 14:36:32 +01:00
senke
92f29ddcac [FE-TYPE-002] fe-type: Add Zod schemas for all API responses
- Created comprehensive Zod schemas (apiSchemas.ts) for:
  * User, Track, Playlist, Conversation, Message
  * Session, AuditLog, Notification
  * PaginationData, ApiError, ApiResponse
- Added validation utilities:
  * validateApiResponse: Validate and normalize responses
  * safeValidateApiResponse: Safe validation with error handling
  * validateApiResponseArray: Validate arrays of items
  * validatePaginatedResponse: Validate paginated responses
- Integrated validation into API client interceptor
- Created validatedApiClient for type-safe API calls
- Automatic ID normalization during validation
- Comprehensive test suite (13 tests, all passing)
- Ensures runtime type safety for all API responses
2025-12-25 14:30:55 +01:00
senke
aba18183b8 [FE-TYPE-001] fe-type: Fix all ID type mismatches
- Created ID normalization utility (idNormalization.ts) with:
  * normalizeId: Convert IDs to strings (handles number/string/null)
  * normalizeObjectIds: Recursively normalize IDs in objects
  * normalizeArrayIds: Normalize IDs in arrays of objects
  * Type guards for ID validation
- Updated stores/chat.ts to use normalization instead of manual String() conversions
- Fixed type definitions:
  * PlaylistAnalytics: playlistId number -> string
  * ImportPlaylistButton: playlistId number -> string
  * ExportPlaylistButton: playlistId number -> string
  * usePlaylistNotifications: lastNotificationId number -> string
- Removed unnecessary String() conversions in comparisons
- Comprehensive test suite (20 tests, all passing)
- Ensures all IDs are consistently strings (UUIDs) throughout the app
2025-12-25 14:27:28 +01:00
senke
8e354048ac [FE-STATE-012] fe-state: Add state cleanup
- Created state cleanup system (stateCleanup.ts) with:
  * Size limit cleanup: Limit number of items in arrays/normalized state
  * Age limit cleanup: Remove items older than specified time
  * Custom cleanup: User-defined cleanup functions
  * Support for arrays, normalized state, and nested objects
- Added cleanupMiddleware for automatic periodic cleanup
- Added performCleanup function for manual cleanup
- Comprehensive test suite (9 tests, all passing)
- Prevents memory leaks by cleaning unused state data
2025-12-25 14:23:06 +01:00
senke
6e13d2b71a [FE-STATE-011] fe-state: Add state versioning
- Created state versioning system (stateVersioning.ts) with:
  * Version management: Wrap/unwrap state with version info
  * Migration support: Sequential migrations between versions
  * Versioned storage: Adapter for Zustand persist middleware
  * Error handling: Fallback to initial state on migration failure
  * Automatic migration: Migrate state on load if needed
- Added comprehensive test suite (17 tests, 14 passing)
- Created example integration showing usage with stores
- Supports legacy state (unversioned) and version mismatches
2025-12-25 14:19:40 +01:00
senke
db56db5d71 [FE-STATE-010] fe-state: Add state middleware
- Created comprehensive state middleware (stateMiddleware.ts) with:
  * Logging: State change logging with configurable filters
  * Analytics: Event tracking for state changes, actions, errors, performance
  * Error handling: Automatic error capture and reporting
  * Sanitization: Remove sensitive data from logs
  * Performance tracking: Monitor async action durations
- Applied middleware to LibraryStore as example
- Added comprehensive test suite (7 tests, all passing)
- Configurable options for all features
- Global handlers for analytics and errors
2025-12-25 14:14:54 +01:00
senke
7c11f838ad [FE-STATE-009] fe-state: Add state normalization
- Created state normalization utility (stateNormalization.ts) with functions:
  * normalize/denormalize for converting arrays to normalized state
  * addToNormalized, updateInNormalized, removeFromNormalized
  * Helper functions for working with normalized state
- Applied normalization to LibraryStore (items and favorites)
- Updated storeSelectors to convert normalized state to arrays
- Updated DashboardPage components to use new selectors
- Updated tests to work with normalized state structure
- Improved performance with O(1) lookups instead of O(n) array searches
2025-12-25 14:10:14 +01:00
senke
c9948507e2 [FE-STATE-008] fe-state: Add state selectors optimization 2025-12-25 13:58:53 +01:00
senke
69bfbb26f2 [FE-STATE-007] fe-state: Add state debugging tools 2025-12-25 13:56:53 +01:00
senke
45a090743d [FE-STATE-006] fe-state: Add state undo/redo 2025-12-25 13:51:14 +01:00
senke
2a94e2cab4 [FE-STATE-005] fe-state: Add optimistic state updates 2025-12-25 13:48:32 +01:00
senke
3b9a58bf84 [FE-STATE-004] fe-state: Add state invalidation 2025-12-25 13:45:49 +01:00
senke
fdb94d729b [FE-STATE-003] fe-state: Add state hydration 2025-12-25 13:43:01 +01:00
senke
8b7a9bf965 [FE-STATE-002] fe-state: Add state synchronization 2025-12-25 13:40:56 +01:00
senke
9679b22441 [FE-STATE-001] fe-state: Add state persistence 2025-12-25 13:38:49 +01:00
senke
b6753523e2 [FE-API-019] fe-api: Add API mocking for development 2025-12-25 13:37:10 +01:00
senke
c58cb4b031 [FE-API-018] fe-api: Add optimistic updates 2025-12-25 13:33:42 +01:00
senke
c5d05fa480 [FE-API-017] fe-api: Add request caching 2025-12-25 13:29:43 +01:00
senke
92a989eb0e [FE-API-016] fe-api: Add request deduplication 2025-12-25 13:26:27 +01:00
senke
b108e74d01 [FE-API-015] fe-api: Add offline support 2025-12-25 13:24:19 +01:00
senke
99dbc03ef0 [FE-API-014] fe-api: Add request timeout handling 2025-12-25 13:22:15 +01:00
senke
a350cddaa3 [FE-API-013] fe-api: Add error handling improvements 2025-12-25 13:20:07 +01:00
senke
99993e3acc [FE-API-012] fe-api: Add conversation service improvements 2025-12-25 13:15:39 +01:00
senke
3f2ef8a28c [FE-API-011] fe-api: Add roles service integration 2025-12-25 13:13:25 +01:00
senke
a0294eea23 [FE-API-010] fe-api: Add analytics service integration 2025-12-25 12:31:54 +01:00
senke
cb693b809d [FE-API-009] fe-api: Add notifications service integration 2025-12-25 12:29:29 +01:00
senke
43f8439923 [FE-API-008] fe-api: Add search service integration 2025-12-25 12:27:42 +01:00