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>
174 lines
7.2 KiB
Markdown
174 lines
7.2 KiB
Markdown
# 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.
|