Files
marketplaces/docs/archive/Sprint-11-User-Experience-Report.md
sdarbinyan 5374401257 docs: consolidate documentation and archive temporary reports
Step 1-2 (audit + plan): classified 35 project markdown files into
Core/Architecture/ADR/Temporary-audit/Sprint-report/Generated-review/
Duplicate/Obsolete/Historical. Agent-tooling files (.agents/skills/**,
.superpowers/**, docs/context/**, CLAUDE.md/GEMINI.md/AGENTS.md/
.github/copilot-instructions.md) explicitly out of scope — intentional
per-tool duplication, not documentation debt.

Step 3 (merge, no information lost):
- docs/PROJECT.md -> docs/PROJECT_INDEX.md, rewritten as the single
  entry point: system overview, living-doc index, archive pointer,
  current status, and a critical-finding callout up top.
- docs/backend/BACKEND-INTEGRATION.md -> docs/BACKEND_API.md,
  docs/backend/REMAINING-BACKEND-WORK.md ->
  docs/BACKEND_API_REMAINING_WORK.md (also folded in a legitimate
  uncommitted status update that had been sitting unstaged all
  session: categories marked DONE, order-creation endpoint noted done).
- RELEASE-NOTES.md merged into CHANGELOG.md (was a near-duplicate of
  the same release content in friendlier prose), then deleted.
- KNOWN-ISSUES.md: added item 13 (see below) and item 14 (missing
  canDeactivate on admin/products edit, from the archived PROJECT-STATE
  audit, re-verified still true); added a correction note to Fixed
  item 7.
- All cross-references to renamed/moved files fixed across every
  kept doc (grep+sed pass, then verified with a link-existence check
  across all 58 in-scope markdown files -> 0 broken links).

Step 4 (archive, nothing deleted without merging first): created
docs/archive/, moved 19 files there (3 root sprint reports, 1 platform
report, SPRINT-PLAN.md, and 14 one-off audit/review/report docs).
Added correction headers to the 3 archived docs whose conclusions were
affected by the finding below, rather than silently leaving them
misleading.

Step 5: docs/PROJECT_INDEX.md rewritten per the mission brief -
someone opening the repo should understand the whole system from it.

IMPORTANT FINDING (surfaced during this audit, not the mission's
primary goal but too significant to bury): pages/category/*,
pages/search/*, pages/item-detail/*, pages/info/**, pages/legal/**
(40+ files) are entirely unrouted dead code - app.routes.ts's
cmsContentRoutes is a literal empty array, and category/search/product
routes redirect to CatalogContainerComponent/
ProductDetailsContainerComponent, not these files. Confirmed against
app.routes.ts directly and cross-checked against FRONTEND.md's own
routing description. This means several fixes from earlier this cycle
(RC-Premium-01, RC STORE-01) and the dead-code cleanup sprint's
conclusion that these files were live were all wrong - documented as
KNOWN-ISSUES.md item 13, flagged at the top of PROJECT_INDEX.md, and
noted on the 3 archived docs whose conclusions it affects. No
application code was changed to fix this (out of scope per this
session's 'documentation only' constraint) - it needs a wire-it-up-or-
delete-it decision first.

Verification: tsc --noEmit clean, npm run build green, all markdown
links across 58 in-scope files resolve (checked programmatically).
No application/Angular/backend code modified.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 19:10:49 +04:00

7.2 KiB

Sprint 11 - User Experience Module Report

Scope

Implemented reusable customer experience capabilities for marketplace storefront UX while preserving established architecture constraints.

Implemented features:

  • Wishlist (guest local storage + architecture-ready repository contract)
  • Compare (configurable max count, reusable comparison table, compare page)
  • Recently Viewed (auto tracking + reusable strip + widget compatibility)
  • Continue Browsing (persist/restore filters, sort, page, scroll)
  • Saved Searches (architecture + UI integration)
  • Product Sharing (Web Share + clipboard fallback)
  • Product Card action preparation without duplication
  • Floating notifications and heart animation

Architectural Constraints Compliance

Confirmed constraints:

  • No modifications to authentication, payment, bootstrap loading flow, widget engine core, section engine core.
  • No direct HttpClient usage in UI feature components.
  • Product data path remains facade-driven.
  • Existing ProductFacade contracts preserved (only UX facade added separately).
  • Bootstrap contains feature configuration only; no business/user data payload.

Implemented Modules and Components

Core Domain and Repository Contracts

Added:

  • src/app/core/user-experience/models/user-experience.model.ts
  • src/app/core/user-experience/repositories/user-experience.repository.ts
  • src/app/core/user-experience/repositories/local-user-experience.repository.ts
  • src/app/core/user-experience/user-experience-repository.token.ts
  • src/app/facades/platform/user-experience.facade.ts

Purpose:

  • Create domain entities: FavoriteItem, ComparedProduct, RecentlyViewedItem, SavedSearch, ContinueBrowsingState.
  • Provide repository abstraction for future authenticated backend synchronization.
  • Implement guest mode via localStorage repository.

Bootstrap Config Extensions

Added:

  • src/app/shared/models/config/user-experience-config.model.ts

Updated:

  • src/app/shared/models/config/bootstrap-config.model.ts
  • src/app/shared/models/config/index.ts
  • src/assets/mock/bootstrap/bootstrap.json

New bootstrap block:

  • userExperience.wishlist
  • userExperience.compare
  • userExperience.recentlyViewed
  • userExperience.share
  • userExperience.continueBrowsing
  • userExperience.savedSearches

Wishlist

Added:

  • src/app/features/website/user-experience/wishlist/containers/wishlist-page.component.ts
  • src/app/features/website/user-experience/wishlist/containers/wishlist-page.component.html
  • src/app/features/website/user-experience/wishlist/containers/wishlist-page.component.scss

Integrated:

  • Header badge + counter in header component.
  • Route: /wishlist.

Compare

Added:

  • src/app/features/website/user-experience/compare/components/compare-table.component.ts
  • src/app/features/website/user-experience/compare/components/compare-table.component.html
  • src/app/features/website/user-experience/compare/components/compare-table.component.scss
  • src/app/features/website/user-experience/compare/containers/compare-page.component.ts
  • src/app/features/website/user-experience/compare/containers/compare-page.component.html
  • src/app/features/website/user-experience/compare/containers/compare-page.component.scss

Integrated:

  • Route: /compare.
  • Configurable max items from bootstrap userExperience.compare.maxItems.
  • Hide-identical and highlight-differences controls.
  • Responsive table wrapper.

Recently Viewed

Added:

  • src/app/features/website/user-experience/components/recently-viewed-strip/recently-viewed-strip.component.ts
  • src/app/features/website/user-experience/components/recently-viewed-strip/recently-viewed-strip.component.html
  • src/app/features/website/user-experience/components/recently-viewed-strip/recently-viewed-strip.component.scss
  • src/app/widgets/ui/recently-viewed-widget.component.ts

Integrated:

  • Auto-tracking in product details container after product load.
  • Widget compatibility via widget registry bootstrap + manifest.

Updated widget integration:

  • src/app/widgets/ui/index.ts
  • src/app/widgets/registry/widget-registry.bootstrap.service.ts
  • src/app/widgets/resolvers/data-source-resolver.service.ts
  • src/assets/mock/bootstrap/widget-manifest.json

Continue Browsing + Saved Searches

Integrated in catalog container:

  • Persist selected filters, sort, page, layout, and scroll position.
  • Restore state automatically on entry when route has no explicit category/query.
  • Save current search and reuse/delete saved searches.

Updated:

  • src/app/features/website/catalog/containers/catalog-container.component.ts
  • src/app/features/website/catalog/containers/catalog-container.component.html
  • src/app/features/website/catalog/containers/catalog-container.component.scss

Product Sharing and Product Card Actions

Added:

  • src/app/features/website/user-experience/services/product-share.service.ts

Updated Product Card to reusable actions (without duplication):

  • src/app/components/product-card/product-card.component.ts
  • src/app/components/product-card/product-card.component.html
  • src/app/components/product-card/product-card.component.scss

Updated catalog grid/result propagation:

  • src/app/features/website/catalog/components/product-grid/product-grid.component.ts
  • src/app/features/website/catalog/components/product-grid/product-grid.component.html
  • src/app/features/website/catalog/components/search-results/search-results.component.ts
  • src/app/features/website/catalog/components/search-results/search-results.component.html

UI/Animation/Notification Enhancements

Added:

  • src/app/features/website/user-experience/services/user-notification.service.ts
  • src/app/features/website/user-experience/components/floating-notifications/floating-notifications.component.ts
  • src/app/features/website/user-experience/components/floating-notifications/floating-notifications.component.html
  • src/app/features/website/user-experience/components/floating-notifications/floating-notifications.component.scss

Integrated globally in app shell:

  • src/app/app.ts
  • src/app/app.html

Heart animation:

  • Added active pulse animation in product card favorite action.

Routes and Header

Updated:

  • src/app/app.routes.ts (wishlist/compare routes)
  • src/app/components/header/header.component.ts
  • src/app/components/header/header.component.html
  • src/app/components/header/header.component.scss

Localization

Updated translation contract and locale dictionaries:

  • src/app/i18n/translations.ts
  • src/app/i18n/en.ts
  • src/app/i18n/ru.ts
  • src/app/i18n/hy.ts

Documentation Updates

Updated to include Sprint 11 bootstrap and backend contract expectations:

  • docs/platform/02-bootstrap-json-spec.md
  • docs/platform/06-api-contracts.md
  • docs/platform/13-backend-requirements.md
  • docs/backend-platform/business-apis.md

Validation

Executed:

  • npm run build
  • npm run arch:check:boundaries
  • npm run arch:check:cycles

Results:

  • Build: PASS (existing bundle budget warning remains)
  • Architecture boundaries: PASS
  • Circular dependencies: PASS

Notes

  • Guest mode is fully functional using local storage.
  • Authenticated synchronization is prepared by repository contracts and can be implemented via alternate repository provider without changing feature UI components.
  • Bootstrap remains configuration-only and contains no user/business lists for wishlist/compare/recently viewed/saved searches.