1517 lines
No EOL
52 KiB
JSON
1517 lines
No EOL
52 KiB
JSON
{
|
|
"roadmap": {
|
|
"title": "Storybook 100% Coverage Roadmap",
|
|
"version": "1.0.0",
|
|
"created": "2026-02-02",
|
|
"targetCompletion": "2026-04-27",
|
|
"totalWeeks": 12,
|
|
"currentCoverage": 42,
|
|
"targetCoverage": 100,
|
|
"totalComponentsMissing": 180,
|
|
"estimatedTotalHours": 270
|
|
},
|
|
"metrics": {
|
|
"currentStories": 164,
|
|
"currentComponents": 384,
|
|
"componentsToAdd": 180,
|
|
"targetStories": 344,
|
|
"averageTimePerStory": "1.5h",
|
|
"weeklyCapacity": "15h"
|
|
},
|
|
"sprints": [
|
|
{
|
|
"id": "sprint-1",
|
|
"name": "Critical Pages & Error Handling",
|
|
"week": 1,
|
|
"startDate": "2026-02-03",
|
|
"endDate": "2026-02-09",
|
|
"priority": "P0",
|
|
"estimatedHours": 18,
|
|
"goal": "Cover all critical error and auth pages",
|
|
"targetCoverage": 47,
|
|
"components": [
|
|
{
|
|
"name": "NotFoundPage",
|
|
"path": "src/features/error/pages/NotFoundPage.tsx",
|
|
"effort": "low",
|
|
"priority": "critical",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithSuggestions"
|
|
]
|
|
},
|
|
{
|
|
"name": "ServerErrorPage",
|
|
"path": "src/features/error/pages/ServerErrorPage.tsx",
|
|
"effort": "low",
|
|
"priority": "critical",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithRetry",
|
|
"NetworkError"
|
|
]
|
|
},
|
|
{
|
|
"name": "LoginPage",
|
|
"path": "src/features/auth/pages/LoginPage.tsx",
|
|
"effort": "medium",
|
|
"priority": "critical",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithError",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "RegisterPage",
|
|
"path": "src/features/auth/pages/RegisterPage.tsx",
|
|
"effort": "medium",
|
|
"priority": "critical",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithError",
|
|
"Success"
|
|
]
|
|
},
|
|
{
|
|
"name": "ForgotPasswordPage",
|
|
"path": "src/features/auth/pages/ForgotPasswordPage.tsx",
|
|
"effort": "medium",
|
|
"priority": "critical",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Sent",
|
|
"Error"
|
|
]
|
|
},
|
|
{
|
|
"name": "ResetPasswordPage",
|
|
"path": "src/features/auth/pages/ResetPasswordPage.tsx",
|
|
"effort": "medium",
|
|
"priority": "critical",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Success",
|
|
"InvalidToken"
|
|
]
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage",
|
|
"path": "src/features/auth/pages/VerifyEmailPage.tsx",
|
|
"effort": "low",
|
|
"priority": "critical",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Pending",
|
|
"Verified",
|
|
"Error"
|
|
]
|
|
},
|
|
{
|
|
"name": "ForgotPasswordForm",
|
|
"path": "src/features/auth/components/ForgotPasswordForm.tsx",
|
|
"effort": "medium",
|
|
"priority": "high",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading",
|
|
"Success"
|
|
]
|
|
},
|
|
{
|
|
"name": "TwoFactorVerify",
|
|
"path": "src/features/auth/components/TwoFactorVerify.tsx",
|
|
"effort": "medium",
|
|
"priority": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Error",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "TwoFactorSetup",
|
|
"path": "src/features/auth/components/TwoFactorSetup.tsx",
|
|
"effort": "medium",
|
|
"priority": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"QRCode",
|
|
"Verification",
|
|
"Complete"
|
|
]
|
|
},
|
|
{
|
|
"name": "AuthErrorMessage",
|
|
"path": "src/features/auth/components/AuthErrorMessage.tsx",
|
|
"effort": "low",
|
|
"priority": "medium",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Network",
|
|
"Validation"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-2",
|
|
"name": "Dashboard & Admin Foundation",
|
|
"week": 2,
|
|
"startDate": "2026-02-10",
|
|
"endDate": "2026-02-16",
|
|
"priority": "P0",
|
|
"estimatedHours": 20,
|
|
"goal": "Cover dashboard and admin core views",
|
|
"targetCoverage": 52,
|
|
"components": [
|
|
{
|
|
"name": "DashboardPage",
|
|
"path": "src/features/dashboard/pages/DashboardPage.tsx",
|
|
"effort": "high",
|
|
"priority": "critical",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "AdminDashboardView",
|
|
"path": "src/components/admin/AdminDashboardView.tsx",
|
|
"effort": "high",
|
|
"priority": "critical",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "AdminUsersView",
|
|
"path": "src/components/admin/AdminUsersView.tsx",
|
|
"effort": "high",
|
|
"priority": "critical",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty",
|
|
"Loading",
|
|
"WithFilters"
|
|
]
|
|
},
|
|
{
|
|
"name": "AdminModerationView",
|
|
"path": "src/components/admin/AdminModerationView.tsx",
|
|
"effort": "high",
|
|
"priority": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Queue",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "AdminSettingsView",
|
|
"path": "src/components/admin/AdminSettingsView.tsx",
|
|
"effort": "medium",
|
|
"priority": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Saving"
|
|
]
|
|
},
|
|
{
|
|
"name": "AdminAuditLogsView",
|
|
"path": "src/components/admin/AdminAuditLogsView.tsx",
|
|
"effort": "medium",
|
|
"priority": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Filtered",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "AdminView",
|
|
"path": "src/components/views/AdminView.tsx",
|
|
"effort": "medium",
|
|
"priority": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "BanUserModal",
|
|
"path": "src/components/admin/BanUserModal.tsx",
|
|
"effort": "medium",
|
|
"priority": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Confirm"
|
|
]
|
|
},
|
|
{
|
|
"name": "UserTableRow",
|
|
"path": "src/components/admin/UserTableRow.tsx",
|
|
"effort": "low",
|
|
"priority": "medium",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Selected",
|
|
"Banned"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-3",
|
|
"name": "Player & Playback",
|
|
"week": 3,
|
|
"startDate": "2026-02-17",
|
|
"endDate": "2026-02-23",
|
|
"priority": "P1",
|
|
"estimatedHours": 18,
|
|
"goal": "Complete player feature coverage",
|
|
"targetCoverage": 57,
|
|
"components": [
|
|
{
|
|
"name": "AudioPlayer",
|
|
"path": "src/features/player/components/AudioPlayer.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Playing",
|
|
"Paused",
|
|
"Loading",
|
|
"Error"
|
|
]
|
|
},
|
|
{
|
|
"name": "FullPlayer",
|
|
"path": "src/components/player/FullPlayer.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithQueue",
|
|
"WithLyrics"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlayerError",
|
|
"path": "src/features/player/components/PlayerError.tsx",
|
|
"effort": "low",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"NetworkError",
|
|
"FormatError",
|
|
"Generic"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaybackSpeedControl",
|
|
"path": "src/features/player/components/PlaybackSpeedControl.tsx",
|
|
"effort": "low",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"1x",
|
|
"1.5x",
|
|
"2x"
|
|
]
|
|
},
|
|
{
|
|
"name": "QueuePanel",
|
|
"path": "src/components/player/QueuePanel.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty",
|
|
"Reordering"
|
|
]
|
|
},
|
|
{
|
|
"name": "QueueView",
|
|
"path": "src/components/views/QueueView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "SaveQueueAsPlaylistModal",
|
|
"path": "src/components/player/SaveQueueAsPlaylistModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Saving",
|
|
"Success"
|
|
]
|
|
},
|
|
{
|
|
"name": "LyricsPanel",
|
|
"path": "src/components/studio/LyricsPanel.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Synced",
|
|
"Empty"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-4",
|
|
"name": "Playlists Complete",
|
|
"week": 4,
|
|
"startDate": "2026-02-24",
|
|
"endDate": "2026-03-02",
|
|
"priority": "P1",
|
|
"estimatedHours": 20,
|
|
"goal": "100% playlist feature coverage",
|
|
"targetCoverage": 62,
|
|
"components": [
|
|
{
|
|
"name": "PlaylistList",
|
|
"path": "src/features/playlists/components/PlaylistList.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Grid",
|
|
"Empty",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaylistDetailPage",
|
|
"path": "src/features/playlists/pages/PlaylistDetailPage.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading",
|
|
"NotFound"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaylistListPage",
|
|
"path": "src/features/playlists/pages/PlaylistListPage.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaylistTrackList",
|
|
"path": "src/features/playlists/components/PlaylistTrackList.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty",
|
|
"Reordering"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaylistTrackItem",
|
|
"path": "src/features/playlists/components/PlaylistTrackItem.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Playing",
|
|
"Selected"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaylistSearch",
|
|
"path": "src/features/playlists/components/PlaylistSearch.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithResults"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaylistRecommendations",
|
|
"path": "src/features/playlists/components/PlaylistRecommendations.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "AddCollaboratorModal",
|
|
"path": "src/features/playlists/components/AddCollaboratorModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Searching",
|
|
"Added"
|
|
]
|
|
},
|
|
{
|
|
"name": "CollaboratorList",
|
|
"path": "src/features/playlists/components/CollaboratorList.tsx",
|
|
"effort": "low",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "SharePlaylistModal",
|
|
"path": "src/features/playlists/components/SharePlaylistModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Copied"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-5",
|
|
"name": "Tracks & Search",
|
|
"week": 5,
|
|
"startDate": "2026-03-03",
|
|
"endDate": "2026-03-09",
|
|
"priority": "P1",
|
|
"estimatedHours": 18,
|
|
"goal": "Complete tracks and search coverage",
|
|
"targetCoverage": 67,
|
|
"components": [
|
|
{
|
|
"name": "TrackDetailPage",
|
|
"path": "src/features/tracks/pages/TrackDetailPage.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading",
|
|
"NotFound"
|
|
]
|
|
},
|
|
{
|
|
"name": "TrackSearch",
|
|
"path": "src/features/tracks/components/TrackSearch.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithResults",
|
|
"NoResults"
|
|
]
|
|
},
|
|
{
|
|
"name": "TrackSearchResults",
|
|
"path": "src/features/tracks/components/TrackSearchResults.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "TrackSearchFilters",
|
|
"path": "src/features/tracks/components/TrackSearchFilters.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Applied"
|
|
]
|
|
},
|
|
{
|
|
"name": "TrackListContainer",
|
|
"path": "src/features/tracks/components/TrackListContainer.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "TrackAnalyticsView",
|
|
"path": "src/components/tracks/TrackAnalyticsView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "SearchPage",
|
|
"path": "src/features/search/pages/SearchPage.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Results",
|
|
"NoResults",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "GlobalSearchBar",
|
|
"path": "src/components/search/GlobalSearchBar.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Focused",
|
|
"WithSuggestions"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-6",
|
|
"name": "Upload & Library",
|
|
"week": 6,
|
|
"startDate": "2026-03-10",
|
|
"endDate": "2026-03-16",
|
|
"priority": "P1",
|
|
"estimatedHours": 22,
|
|
"goal": "Complete upload and library workflows",
|
|
"targetCoverage": 72,
|
|
"components": [
|
|
{
|
|
"name": "UploadView",
|
|
"path": "src/components/views/UploadView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Uploading",
|
|
"Complete",
|
|
"Error"
|
|
]
|
|
},
|
|
{
|
|
"name": "UploadProgressBar",
|
|
"path": "src/components/upload/UploadProgressBar.tsx",
|
|
"effort": "low",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Complete",
|
|
"Error"
|
|
]
|
|
},
|
|
{
|
|
"name": "FileUploadZone",
|
|
"path": "src/components/upload/FileUploadZone.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Dragging",
|
|
"Processing"
|
|
]
|
|
},
|
|
{
|
|
"name": "BulkUploadModal",
|
|
"path": "src/components/upload/BulkUploadModal.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Uploading",
|
|
"Complete"
|
|
]
|
|
},
|
|
{
|
|
"name": "MetadataEditor",
|
|
"path": "src/components/upload/MetadataEditor.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithData",
|
|
"Saving"
|
|
]
|
|
},
|
|
{
|
|
"name": "MetadataForm",
|
|
"path": "src/components/upload/metadata/MetadataForm.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithErrors"
|
|
]
|
|
},
|
|
{
|
|
"name": "CoverArtUploadModal",
|
|
"path": "src/components/upload/CoverArtUploadModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Uploading",
|
|
"Preview"
|
|
]
|
|
},
|
|
{
|
|
"name": "LibraryPage",
|
|
"path": "src/features/library/pages/LibraryPage.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty",
|
|
"Loading"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-7",
|
|
"name": "Chat & Social",
|
|
"week": 7,
|
|
"startDate": "2026-03-17",
|
|
"endDate": "2026-03-23",
|
|
"priority": "P2",
|
|
"estimatedHours": 18,
|
|
"goal": "Complete chat and social features",
|
|
"targetCoverage": 77,
|
|
"components": [
|
|
{
|
|
"name": "ChatPage",
|
|
"path": "src/features/chat/pages/ChatPage.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "ChatView",
|
|
"path": "src/components/views/ChatView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "CreateRoomDialog",
|
|
"path": "src/features/chat/components/CreateRoomDialog.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Creating"
|
|
]
|
|
},
|
|
{
|
|
"name": "MessageSearch",
|
|
"path": "src/features/chat/components/MessageSearch.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Results",
|
|
"NoResults"
|
|
]
|
|
},
|
|
{
|
|
"name": "VirtualizedChatMessages",
|
|
"path": "src/features/chat/components/VirtualizedChatMessages.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "SocialView",
|
|
"path": "src/components/views/SocialView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "ConnectionsView",
|
|
"path": "src/components/social/ConnectionsView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "FeedView",
|
|
"path": "src/components/views/FeedView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "CreatePostModal",
|
|
"path": "src/components/social/CreatePostModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Posting"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-8",
|
|
"name": "Settings & Preferences",
|
|
"week": 8,
|
|
"startDate": "2026-03-24",
|
|
"endDate": "2026-03-30",
|
|
"priority": "P2",
|
|
"estimatedHours": 20,
|
|
"goal": "Complete all settings panels",
|
|
"targetCoverage": 82,
|
|
"components": [
|
|
{
|
|
"name": "SettingsPage",
|
|
"path": "src/features/settings/pages/SettingsPage.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "SettingsView",
|
|
"path": "src/components/views/SettingsView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "SecuritySettings",
|
|
"path": "src/components/settings/SecuritySettings.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Updating"
|
|
]
|
|
},
|
|
{
|
|
"name": "SessionManagement",
|
|
"path": "src/components/settings/SessionManagement.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithSessions"
|
|
]
|
|
},
|
|
{
|
|
"name": "AppearanceSettingsView",
|
|
"path": "src/components/settings/AppearanceSettingsView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "AccessibilitySettingsView",
|
|
"path": "src/components/views/AccessibilitySettingsView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "ChangeEmailModal",
|
|
"path": "src/components/settings/ChangeEmailModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Sending",
|
|
"Sent"
|
|
]
|
|
},
|
|
{
|
|
"name": "ChangeUsernameModal",
|
|
"path": "src/components/settings/ChangeUsernameModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Checking",
|
|
"Available"
|
|
]
|
|
},
|
|
{
|
|
"name": "DeleteAccountView",
|
|
"path": "src/components/settings/DeleteAccountView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Confirm"
|
|
]
|
|
},
|
|
{
|
|
"name": "DataExportView",
|
|
"path": "src/components/settings/DataExportView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Exporting",
|
|
"Ready"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-9",
|
|
"name": "Marketplace & Commerce",
|
|
"week": 9,
|
|
"startDate": "2026-03-31",
|
|
"endDate": "2026-04-06",
|
|
"priority": "P2",
|
|
"estimatedHours": 22,
|
|
"goal": "Complete marketplace and commerce",
|
|
"targetCoverage": 87,
|
|
"components": [
|
|
{
|
|
"name": "MarketplaceView",
|
|
"path": "src/components/views/MarketplaceView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "MarketplaceHome",
|
|
"path": "src/pages/marketplace/MarketplaceHome.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "ProductDetailView",
|
|
"path": "src/components/marketplace/ProductDetailView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading",
|
|
"OutOfStock"
|
|
]
|
|
},
|
|
{
|
|
"name": "CartView",
|
|
"path": "src/components/views/CartView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "CartItem",
|
|
"path": "src/components/commerce/CartItem.tsx",
|
|
"effort": "low",
|
|
"estimatedHours": 1,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Removing"
|
|
]
|
|
},
|
|
{
|
|
"name": "CheckoutView",
|
|
"path": "src/components/views/CheckoutView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 3,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Processing",
|
|
"Success"
|
|
]
|
|
},
|
|
{
|
|
"name": "OrderSummary",
|
|
"path": "src/components/commerce/OrderSummary.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"WithDiscount"
|
|
]
|
|
},
|
|
{
|
|
"name": "LicenceCard",
|
|
"path": "src/components/commerce/LicenceCard.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Basic",
|
|
"Pro",
|
|
"Exclusive"
|
|
]
|
|
},
|
|
{
|
|
"name": "PurchasesView",
|
|
"path": "src/components/views/PurchasesView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-10",
|
|
"name": "Views & Layouts",
|
|
"week": 10,
|
|
"startDate": "2026-04-07",
|
|
"endDate": "2026-04-13",
|
|
"priority": "P2",
|
|
"estimatedHours": 18,
|
|
"goal": "Complete remaining views",
|
|
"targetCoverage": 92,
|
|
"components": [
|
|
{
|
|
"name": "DiscoverView",
|
|
"path": "src/components/views/DiscoverView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "ExploreView",
|
|
"path": "src/components/views/ExploreView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "ProfileView",
|
|
"path": "src/components/views/ProfileView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "UserProfilePage",
|
|
"path": "src/features/profile/pages/UserProfilePage.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Own",
|
|
"NotFound"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotificationsPage",
|
|
"path": "src/features/notifications/pages/NotificationsPage.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "NotificationsView",
|
|
"path": "src/components/views/NotificationsView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "PlaylistsView",
|
|
"path": "src/components/views/PlaylistsView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "AnalyticsView",
|
|
"path": "src/components/views/AnalyticsView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-11",
|
|
"name": "Studio & Education",
|
|
"week": 11,
|
|
"startDate": "2026-04-14",
|
|
"endDate": "2026-04-20",
|
|
"priority": "P3",
|
|
"estimatedHours": 20,
|
|
"goal": "Complete studio and education features",
|
|
"targetCoverage": 96,
|
|
"components": [
|
|
{
|
|
"name": "StudioView",
|
|
"path": "src/components/views/StudioView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "ProjectDetailView",
|
|
"path": "src/components/studio/ProjectDetailView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Loading"
|
|
]
|
|
},
|
|
{
|
|
"name": "CreateProjectModal",
|
|
"path": "src/components/studio/CreateProjectModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Creating"
|
|
]
|
|
},
|
|
{
|
|
"name": "GoLiveView",
|
|
"path": "src/components/studio/GoLiveView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Setup",
|
|
"Live",
|
|
"Ended"
|
|
]
|
|
},
|
|
{
|
|
"name": "LyricsEditorModal",
|
|
"path": "src/components/studio/LyricsEditorModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Syncing"
|
|
]
|
|
},
|
|
{
|
|
"name": "EducationView",
|
|
"path": "src/components/views/EducationView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "CourseDetailView",
|
|
"path": "src/components/education/CourseDetailView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Enrolled"
|
|
]
|
|
},
|
|
{
|
|
"name": "CourseLearningView",
|
|
"path": "src/components/education/CourseLearningView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Complete"
|
|
]
|
|
},
|
|
{
|
|
"name": "LiveView",
|
|
"path": "src/components/views/LiveView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sprint-12",
|
|
"name": "Final Sprint - 100% Coverage",
|
|
"week": 12,
|
|
"startDate": "2026-04-21",
|
|
"endDate": "2026-04-27",
|
|
"priority": "P3",
|
|
"estimatedHours": 25,
|
|
"goal": "Complete all remaining components",
|
|
"targetCoverage": 100,
|
|
"components": [
|
|
{
|
|
"name": "GearView",
|
|
"path": "src/components/views/GearView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "EquipmentDetailView",
|
|
"path": "src/components/inventory/EquipmentDetailView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "DeveloperDashboardView",
|
|
"path": "src/components/developer/DeveloperDashboardView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "APIPlaygroundView",
|
|
"path": "src/components/developer/APIPlaygroundView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "CreateAPIKeyModal",
|
|
"path": "src/components/developer/CreateAPIKeyModal.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Created"
|
|
]
|
|
},
|
|
{
|
|
"name": "WebhooksView",
|
|
"path": "src/features/webhooks/WebhooksView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "MonitoringDashboard",
|
|
"path": "src/components/monitoring/MonitoringDashboard.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
},
|
|
{
|
|
"name": "WishlistView",
|
|
"path": "src/components/views/WishlistView.tsx",
|
|
"effort": "medium",
|
|
"estimatedHours": 1.5,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default",
|
|
"Empty"
|
|
]
|
|
},
|
|
{
|
|
"name": "FileManagerView",
|
|
"path": "src/components/views/FileManagerView.tsx",
|
|
"effort": "high",
|
|
"estimatedHours": 2,
|
|
"status": "pending",
|
|
"variants": [
|
|
"Default"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"milestones": [
|
|
{
|
|
"id": "M1",
|
|
"name": "Critical Coverage",
|
|
"targetDate": "2026-02-16",
|
|
"coverage": 52,
|
|
"description": "All critical pages and admin covered"
|
|
},
|
|
{
|
|
"id": "M2",
|
|
"name": "Core Features",
|
|
"targetDate": "2026-03-09",
|
|
"coverage": 67,
|
|
"description": "Player, Playlists, Tracks complete"
|
|
},
|
|
{
|
|
"id": "M3",
|
|
"name": "Full Features",
|
|
"targetDate": "2026-03-30",
|
|
"coverage": 82,
|
|
"description": "Upload, Chat, Social, Settings complete"
|
|
},
|
|
{
|
|
"id": "M4",
|
|
"name": "Complete Coverage",
|
|
"targetDate": "2026-04-27",
|
|
"coverage": 100,
|
|
"description": "All components covered"
|
|
}
|
|
],
|
|
"weeklyTargets": [
|
|
{
|
|
"week": 1,
|
|
"coverage": 47,
|
|
"storiesAdded": 11
|
|
},
|
|
{
|
|
"week": 2,
|
|
"coverage": 52,
|
|
"storiesAdded": 9
|
|
},
|
|
{
|
|
"week": 3,
|
|
"coverage": 57,
|
|
"storiesAdded": 8
|
|
},
|
|
{
|
|
"week": 4,
|
|
"coverage": 62,
|
|
"storiesAdded": 10
|
|
},
|
|
{
|
|
"week": 5,
|
|
"coverage": 67,
|
|
"storiesAdded": 8
|
|
},
|
|
{
|
|
"week": 6,
|
|
"coverage": 72,
|
|
"storiesAdded": 8
|
|
},
|
|
{
|
|
"week": 7,
|
|
"coverage": 77,
|
|
"storiesAdded": 9
|
|
},
|
|
{
|
|
"week": 8,
|
|
"coverage": 82,
|
|
"storiesAdded": 10
|
|
},
|
|
{
|
|
"week": 9,
|
|
"coverage": 87,
|
|
"storiesAdded": 9
|
|
},
|
|
{
|
|
"week": 10,
|
|
"coverage": 92,
|
|
"storiesAdded": 8
|
|
},
|
|
{
|
|
"week": 11,
|
|
"coverage": 96,
|
|
"storiesAdded": 9
|
|
},
|
|
{
|
|
"week": 12,
|
|
"coverage": 100,
|
|
"storiesAdded": 13
|
|
}
|
|
]
|
|
} |