2025-12-03 21:56:50 +00:00
{
"name" : "veza-frontend" ,
"private" : true ,
"version" : "1.0.0" ,
"type" : "module" ,
"scripts" : {
"dev" : "vite" ,
2026-02-10 21:51:51 +00:00
"dev:with-api" : "bash scripts/start-backend-and-dev.sh" ,
2025-12-08 18:57:54 +00:00
"dev:lab" : "bash ./scripts/start_lab.sh" ,
2025-12-03 21:56:50 +00:00
"dev:mocks" : "VITE_USE_MSW=1 vite" ,
"build" : "vite build" ,
"preview" : "vite preview" ,
"test" : "vitest" ,
"test:ui" : "vitest --ui" ,
Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy
Bloc A - Code mort:
- Suppression Studio (components, views, features)
- Suppression gamification + services mock (projectService, storageService, gamificationService)
- Mise à jour Sidebar, Navbar, locales
Bloc B - Frontend:
- Suppression modal.tsx deprecated, Modal.stories (doublon Dialog)
- Feature flags: PLAYLIST_SEARCH, PLAYLIST_RECOMMENDATIONS, ROLE_MANAGEMENT = true
- Suppression 19 tests orphelins, retrait exclusions vitest.config
Bloc C - Backend:
- Extraction routes_auth.go depuis router.go
Bloc D - Rust:
- Suppression security_legacy.rs (code mort, patterns déjà dans security/)
2026-02-14 16:23:32 +00:00
"test:auth" : "vitest run src/features/auth" ,
"test:tracks" : "vitest run src/features/tracks" ,
"test:playlists" : "vitest run src/features/playlists" ,
"test:player" : "vitest run src/features/player" ,
"test:streaming" : "vitest run src/features/streaming" ,
"test:settings-profile-chat" : "vitest run src/features/settings src/features/profile src/features/chat" ,
"test:components-ui" : "vitest run src/components/ui" ,
"test:components-other" : "vitest run src/components/auth src/components/charts src/components/data src/components/feedback src/components/filters src/components/forms src/components/layout src/components/navigation src/components/search" ,
"test:services" : "vitest run src/services" ,
"test:hooks" : "vitest run src/hooks" ,
"test:misc" : "vitest run src/config src/context src/lib src/router src/schemas src/stores src/utils src/__tests__" ,
"test:groups" : "npm run test:auth && npm run test:tracks && npm run test:playlists && npm run test:player && npm run test:streaming && npm run test:settings-profile-chat && npm run test:components-ui && npm run test:components-other && npm run test:services && npm run test:hooks && npm run test:misc" ,
2025-12-03 21:56:50 +00:00
"test:e2e" : "playwright test" ,
"test:e2e:msw" : "cross-env VITE_USE_MSW=1 playwright test" ,
"test:e2e:mocks" : "playwright test --config=playwright.config.mocks.ts" ,
"test:e2e:mocks:ui" : "playwright test --config=playwright.config.mocks.ts --ui" ,
feat(e2e): Playwright + pixelmatch stack for pixel-perfect visual regression
- playwright.config.visual.ts: dedicated config, viewport 1280x720, Chromium only,
snapshots in e2e/tests/visual/__snapshots__
- e2e/tests/visual/visual-regression.spec.ts: login, register, dashboard (full/header/sidebar),
player bar, playlists, 404, mobile/tablet viewports; dark theme + reduceMotion
- scripts/visual-diff.js: optional pixelmatch script to generate diff image from two PNGs
- docs/VISUAL_TESTING_STRATEGY.md: strategy, commands, CI, workflow
- npm scripts: test:visual, test:visual:update, test:visual:report
- deps: pixelmatch, pngjs; @playwright/test aligned to 1.58.1
- baseline snapshots added for login, dashboard, playlists, 404, viewports
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 19:01:30 +00:00
"test:visual" : "playwright test --config=playwright.config.visual.ts" ,
"test:visual:update" : "playwright test --config=playwright.config.visual.ts --update-snapshots" ,
"test:visual:report" : "playwright show-report e2e/playwright-report-visual" ,
feat(web): UI premium Discord/Spotify-like — tokens, shadows, focus, layout
Plan UI premium 6–8 semaines (design system, shell, Storybook, a11y):
- Design system: DESIGN_TOKENS.md, APP_SHELL.md, FULL_LAYOUT_PAGE.md. Single source
for layout/shell (index.css), shadows (design-system.css), durations/easing.
- Tokens: shadow-cover-depth, shadow-gold-glow, shadow-fab-glow; layout max-height
(max-h-layout-drawer, max-h-layout-panel, max-h-layout-list). All duration-200/300/500
replaced by --duration-fast/normal/slow. Arbitrary shadows replaced by token classes.
- Shell & player: Sidebar, Header, GlobalPlayer, MiniPlayer, PlayerQueue, PlayerControls,
AudioPlayer use tokens; focus-visible on Sidebar, PlayerQueue, DropdownMenuTrigger/Item,
TabsTrigger. Typography: text-[10px]/[9px] → text-xs where applicable.
- ESLint: no-restricted-syntax (warn) for w-/h-/rounded-/shadow-/text-/spacing arbitrary.
- Scripts: report-arbitrary-values.mjs, capture/compare/generate visual; visual-complete.spec.ts.
- Stories full layout: Dashboard, Playlists, Library, Settings, Profile in DashboardLayout.stories.
- .cursorrules + README: DESIGN_TOKENS, APP_SHELL, visual commands, no arbitrary without justification.
- apps/web/.gitignore: e2e test artifacts (test-results-visual, playwright-report-visual).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 16:15:58 +00:00
"visual:capture" : "playwright test --config=playwright.config.visual.ts" ,
"visual:update" : "cross-env VISUAL_UPDATE_BASELINES=1 playwright test --config=playwright.config.visual.ts" ,
"visual:baseline" : "node scripts/capture-visual-baseline.mjs --baseline" ,
"visual:compare" : "node scripts/generate-visual-report.mjs" ,
"visual:test" : "playwright test --config=playwright.config.visual.ts" ,
2026-01-07 18:39:21 +00:00
"lint" : "eslint . --ext ts,tsx" ,
2025-12-03 21:56:50 +00:00
"lint:fix" : "eslint . --ext ts,tsx --fix" ,
feat(web): UI premium Discord/Spotify-like — tokens, shadows, focus, layout
Plan UI premium 6–8 semaines (design system, shell, Storybook, a11y):
- Design system: DESIGN_TOKENS.md, APP_SHELL.md, FULL_LAYOUT_PAGE.md. Single source
for layout/shell (index.css), shadows (design-system.css), durations/easing.
- Tokens: shadow-cover-depth, shadow-gold-glow, shadow-fab-glow; layout max-height
(max-h-layout-drawer, max-h-layout-panel, max-h-layout-list). All duration-200/300/500
replaced by --duration-fast/normal/slow. Arbitrary shadows replaced by token classes.
- Shell & player: Sidebar, Header, GlobalPlayer, MiniPlayer, PlayerQueue, PlayerControls,
AudioPlayer use tokens; focus-visible on Sidebar, PlayerQueue, DropdownMenuTrigger/Item,
TabsTrigger. Typography: text-[10px]/[9px] → text-xs where applicable.
- ESLint: no-restricted-syntax (warn) for w-/h-/rounded-/shadow-/text-/spacing arbitrary.
- Scripts: report-arbitrary-values.mjs, capture/compare/generate visual; visual-complete.spec.ts.
- Stories full layout: Dashboard, Playlists, Library, Settings, Profile in DashboardLayout.stories.
- .cursorrules + README: DESIGN_TOKENS, APP_SHELL, visual commands, no arbitrary without justification.
- apps/web/.gitignore: e2e test artifacts (test-results-visual, playwright-report-visual).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 16:15:58 +00:00
"lint:ui" : "eslint src/components src/features --ext ts,tsx" ,
"report:arbitrary" : "node scripts/report-arbitrary-values.mjs" ,
2025-12-03 21:56:50 +00:00
"typecheck" : "tsc --noEmit" ,
2026-01-16 13:36:56 +00:00
"generate:types" : "bash ./scripts/generate-types.sh" ,
"validate:schemas" : "vitest run src/schemas" ,
"validate:types" : "npm run typecheck" ,
"validate:all" : "npm run validate:types && npm run validate:schemas" ,
2025-12-03 21:56:50 +00:00
"fmt" : "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"" ,
"format" : "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"" ,
"format:check" : "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"" ,
"qa:smoke" : "make smoke" ,
"qa:e2e" : "make e2e" ,
"qa:postman" : "make postman" ,
"qa:lh" : "make lighthouse" ,
"qa:k6" : "make load" ,
"qa:visual" : "make visual" ,
"qa:visual:update" : "make visual-update" ,
"qa:backstop:ref" : "make backstop-ref" ,
"qa:backstop:test" : "make backstop-test" ,
"qa:loki" : "make loki" ,
"qa:a11y" : "make a11y" ,
2026-01-15 16:00:30 +00:00
"qa:all" : "make qa-all" ,
2026-02-02 18:34:14 +00:00
"prepare" : "husky" ,
2026-02-05 11:16:23 +00:00
"storybook" : "cross-env VITE_API_URL=/api/v1 VITE_USE_MSW=true VITE_STORYBOOK=true storybook dev -p 6006" ,
2026-02-05 12:39:56 +00:00
"build-storybook" : "cross-env VITE_API_URL=/api/v1 VITE_USE_MSW=true VITE_STORYBOOK=true storybook build" ,
2026-02-07 19:30:49 +00:00
"test:storybook" : "node scripts/audit-storybook.js" ,
2026-02-14 13:02:57 +00:00
"test:storybook:playwright" : "playwright test --config=playwright.config.storybook.ts" ,
"validate:storybook" : "node scripts/validate-storybook.cjs"
2025-12-03 21:56:50 +00:00
} ,
"dependencies" : {
"@dnd-kit/core" : "^6.3.1" ,
"@dnd-kit/sortable" : "^10.0.0" ,
"@dnd-kit/utilities" : "^3.2.2" ,
"@hookform/resolvers" : "^3.3.4" ,
2026-01-26 13:12:17 +00:00
"@radix-ui/react-dialog" : "^1.1.15" ,
"@radix-ui/react-slot" : "^1.2.4" ,
2025-12-27 00:58:49 +00:00
"@sentry/react" : "^10.32.1" ,
2025-12-03 21:56:50 +00:00
"@tanstack/react-query" : "^5.17.0" ,
"@tanstack/react-virtual" : "^3.13.12" ,
2026-02-11 18:51:39 +00:00
"axios" : "^1.13.5" ,
Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy
Bloc A - Code mort:
- Suppression Studio (components, views, features)
- Suppression gamification + services mock (projectService, storageService, gamificationService)
- Mise à jour Sidebar, Navbar, locales
Bloc B - Frontend:
- Suppression modal.tsx deprecated, Modal.stories (doublon Dialog)
- Feature flags: PLAYLIST_SEARCH, PLAYLIST_RECOMMENDATIONS, ROLE_MANAGEMENT = true
- Suppression 19 tests orphelins, retrait exclusions vitest.config
Bloc C - Backend:
- Extraction routes_auth.go depuis router.go
Bloc D - Rust:
- Suppression security_legacy.rs (code mort, patterns déjà dans security/)
2026-02-14 16:23:32 +00:00
"class-variance-authority" : "^0.7.0" ,
2025-12-03 21:56:50 +00:00
"clsx" : "^2.1.0" ,
"date-fns" : "^4.1.0" ,
"dompurify" : "^3.3.0" ,
2025-12-13 02:34:34 +00:00
"emoji-picker-react" : "^4.16.1" ,
2026-01-26 13:12:17 +00:00
"framer-motion" : "^12.29.2" ,
2025-12-03 21:56:50 +00:00
"hls.js" : "^1.6.14" ,
"i18next" : "^25.5.2" ,
"i18next-browser-languagedetector" : "^8.2.0" ,
2025-12-08 18:57:54 +00:00
"immer" : "^10.0.3" ,
2025-12-03 21:56:50 +00:00
"lucide-react" : "^0.321.0" ,
"react" : "^18.2.0" ,
"react-dom" : "^18.2.0" ,
2025-12-13 02:34:34 +00:00
"react-dropzone" : "^14.3.8" ,
2025-12-03 21:56:50 +00:00
"react-hook-form" : "^7.49.3" ,
2025-12-08 18:57:54 +00:00
"react-hot-toast" : "^2.6.0" ,
2025-12-03 21:56:50 +00:00
"react-i18next" : "^15.7.3" ,
Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy
Bloc A - Code mort:
- Suppression Studio (components, views, features)
- Suppression gamification + services mock (projectService, storageService, gamificationService)
- Mise à jour Sidebar, Navbar, locales
Bloc B - Frontend:
- Suppression modal.tsx deprecated, Modal.stories (doublon Dialog)
- Feature flags: PLAYLIST_SEARCH, PLAYLIST_RECOMMENDATIONS, ROLE_MANAGEMENT = true
- Suppression 19 tests orphelins, retrait exclusions vitest.config
Bloc C - Backend:
- Extraction routes_auth.go depuis router.go
Bloc D - Rust:
- Suppression security_legacy.rs (code mort, patterns déjà dans security/)
2026-02-14 16:23:32 +00:00
"react-router-dom" : "^6.30.3" ,
2025-12-03 21:56:50 +00:00
"tailwind-merge" : "^2.2.1" ,
"zod" : "^3.25.76" ,
"zustand" : "^4.5.0"
} ,
"devDependencies" : {
"@lhci/cli" : "^0.12.0" ,
2026-01-11 15:30:43 +00:00
"@openapitools/openapi-generator-cli" : "^2.27.0" ,
feat(e2e): Playwright + pixelmatch stack for pixel-perfect visual regression
- playwright.config.visual.ts: dedicated config, viewport 1280x720, Chromium only,
snapshots in e2e/tests/visual/__snapshots__
- e2e/tests/visual/visual-regression.spec.ts: login, register, dashboard (full/header/sidebar),
player bar, playlists, 404, mobile/tablet viewports; dark theme + reduceMotion
- scripts/visual-diff.js: optional pixelmatch script to generate diff image from two PNGs
- docs/VISUAL_TESTING_STRATEGY.md: strategy, commands, CI, workflow
- npm scripts: test:visual, test:visual:update, test:visual:report
- deps: pixelmatch, pngjs; @playwright/test aligned to 1.58.1
- baseline snapshots added for login, dashboard, playlists, 404, viewports
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 19:01:30 +00:00
"@playwright/test" : "^1.58.2" ,
2026-02-03 08:56:11 +00:00
"@storybook/addon-a11y" : "^8.6.15" ,
2026-02-02 18:34:14 +00:00
"@storybook/addon-essentials" : "^8.6.15" ,
"@storybook/addon-interactions" : "^8.6.15" ,
"@storybook/builder-vite" : "^8.6.15" ,
"@storybook/react-vite" : "^8.6.15" ,
2025-12-03 21:56:50 +00:00
"@tailwindcss/postcss" : "^4.0.0" ,
"@testing-library/jest-dom" : "^6.4.2" ,
"@testing-library/react" : "^14.2.1" ,
"@testing-library/user-event" : "^14.5.2" ,
"@types/node" : "^20.11.5" ,
"@types/react" : "^18.2.48" ,
"@types/react-dom" : "^18.2.18" ,
2025-12-13 02:34:34 +00:00
"@types/react-dropzone" : "^4.2.2" ,
2026-01-18 12:50:47 +00:00
"@types/swagger-ui-react" : "^5.18.0" ,
2026-02-12 20:53:39 +00:00
"@types/dompurify" : "^3.0.5" ,
2025-12-13 02:34:34 +00:00
"@types/uuid" : "^10.0.0" ,
2025-12-03 21:56:50 +00:00
"@typescript-eslint/eslint-plugin" : "^8.0.0" ,
2026-02-12 20:53:39 +00:00
"rollup-plugin-visualizer" : "^6.0.5" ,
"swagger-ui-dist" : "^5.31.0" ,
"swagger-ui-react" : "^5.31.0" ,
2025-12-03 21:56:50 +00:00
"@typescript-eslint/parser" : "^8.0.0" ,
"@vitejs/plugin-react" : "^4.2.1" ,
2026-02-02 18:34:14 +00:00
"@vitest/browser" : "^3.2.4" ,
2026-01-07 10:15:48 +00:00
"@vitest/coverage-v8" : "^3.2.4" ,
2025-12-03 21:56:50 +00:00
"autoprefixer" : "^10.4.17" ,
"babel-plugin-react-remove-properties" : "^0.3.1" ,
"backstopjs" : "^6.2.3" ,
"cross-env" : "^7.0.3" ,
"eslint" : "^9.0.0" ,
"eslint-plugin-jsx-a11y" : "^6.10.2" ,
"eslint-plugin-react" : "^7.37.0" ,
"eslint-plugin-react-hooks" : "^5.0.0" ,
"eslint-plugin-react-refresh" : "^0.4.5" ,
2026-01-15 16:00:30 +00:00
"husky" : "^9.1.7" ,
2025-12-03 21:56:50 +00:00
"jsdom" : "^24.0.0" ,
"msw" : "^2.11.2" ,
2026-02-04 00:01:45 +00:00
"msw-storybook-addon" : "^2.0.6" ,
2025-12-03 21:56:50 +00:00
"newman" : "^6.1.0" ,
"pa11y-ci" : "^3.0.1" ,
feat(e2e): Playwright + pixelmatch stack for pixel-perfect visual regression
- playwright.config.visual.ts: dedicated config, viewport 1280x720, Chromium only,
snapshots in e2e/tests/visual/__snapshots__
- e2e/tests/visual/visual-regression.spec.ts: login, register, dashboard (full/header/sidebar),
player bar, playlists, 404, mobile/tablet viewports; dark theme + reduceMotion
- scripts/visual-diff.js: optional pixelmatch script to generate diff image from two PNGs
- docs/VISUAL_TESTING_STRATEGY.md: strategy, commands, CI, workflow
- npm scripts: test:visual, test:visual:update, test:visual:report
- deps: pixelmatch, pngjs; @playwright/test aligned to 1.58.1
- baseline snapshots added for login, dashboard, playlists, 404, viewports
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 19:01:30 +00:00
"pixelmatch" : "^5.3.0" ,
2026-02-02 18:34:14 +00:00
"playwright" : "^1.58.1" ,
feat(e2e): Playwright + pixelmatch stack for pixel-perfect visual regression
- playwright.config.visual.ts: dedicated config, viewport 1280x720, Chromium only,
snapshots in e2e/tests/visual/__snapshots__
- e2e/tests/visual/visual-regression.spec.ts: login, register, dashboard (full/header/sidebar),
player bar, playlists, 404, mobile/tablet viewports; dark theme + reduceMotion
- scripts/visual-diff.js: optional pixelmatch script to generate diff image from two PNGs
- docs/VISUAL_TESTING_STRATEGY.md: strategy, commands, CI, workflow
- npm scripts: test:visual, test:visual:update, test:visual:report
- deps: pixelmatch, pngjs; @playwright/test aligned to 1.58.1
- baseline snapshots added for login, dashboard, playlists, 404, viewports
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 19:01:30 +00:00
"pngjs" : "^7.0.0" ,
2025-12-03 21:56:50 +00:00
"prettier" : "^3.2.5" ,
2026-02-02 18:34:14 +00:00
"storybook" : "^8.6.15" ,
2026-02-03 08:56:11 +00:00
"storybook-dark-mode" : "^4.0.2" ,
2025-12-03 21:56:50 +00:00
"tailwindcss" : "^4.0.0" ,
2026-01-26 13:12:17 +00:00
"tw-animate-css" : "^1.4.0" ,
2025-12-03 21:56:50 +00:00
"typescript" : "^5.3.3" ,
"vite" : "^7.1.5" ,
"vitest" : "^3.2.4"
} ,
"keywords" : [
"react" ,
"typescript" ,
"vite" ,
"tailwindcss" ,
2026-02-12 22:00:26 +00:00
"sumi-design-system" ,
2025-12-03 21:56:50 +00:00
"zustand" ,
"websocket" ,
"music" ,
"streaming" ,
"collaboration"
] ,
"author" : "Veza Team" ,
"license" : "MIT" ,
"description" : "Application web moderne pour la plateforme Veza de streaming et collaboration musicale" ,
"msw" : {
"workerDirectory" : [
"public"
]
}
feat(e2e): Playwright + pixelmatch stack for pixel-perfect visual regression
- playwright.config.visual.ts: dedicated config, viewport 1280x720, Chromium only,
snapshots in e2e/tests/visual/__snapshots__
- e2e/tests/visual/visual-regression.spec.ts: login, register, dashboard (full/header/sidebar),
player bar, playlists, 404, mobile/tablet viewports; dark theme + reduceMotion
- scripts/visual-diff.js: optional pixelmatch script to generate diff image from two PNGs
- docs/VISUAL_TESTING_STRATEGY.md: strategy, commands, CI, workflow
- npm scripts: test:visual, test:visual:update, test:visual:report
- deps: pixelmatch, pngjs; @playwright/test aligned to 1.58.1
- baseline snapshots added for login, dashboard, playlists, 404, viewports
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 19:01:30 +00:00
}