907ac2cfe09aa44ff10f8089c59172a1362061fb
- Admin Categories CRUD (create/edit/delete/reorder) silently failed end-to-end in local dev: ADMIN_CATEGORIES_GATEWAY resolved strategy.getBackofficeProviderMode(), which (unlike getBootstrapProviderMode()) has no localhost fallback, so it always picked AdminCategoriesApiGateway (real HTTP, 404s here) over the purpose-built AdminCategoriesLocalGateway mock. saveDraft()'s subscribe() has no error branch, so a create/publish click gave zero feedback: the category never saved, dirty stayed true forever, and the unsaved-changes guard then blocked navigation with no explanation. Live-verified end-to-end: created 3 categories, edited, reordered via the keyboard move-up/move-down buttons - all persist correctly now. Fixed by wiring the token to the category-specific strategy.getCategoryProviderMode() (was already defined, just never called) and giving it the same isLocalhost() mock fallback getBootstrapProviderMode() already uses. Production behavior (non-localhost) is unchanged - still resolves to the real API gateway. - Categories list (tree/table/grid views) mislabeled its Edit button 'Edit product' (adminProducts.edit) instead of 'Edit category' - copy-pasted the wrong existing i18n key; adminCategories.edit already exists with the correct translation in en/ru/hy. Not part of the tracked ~178-key missing-translation gap (docs/KNOWN-ISSUES.md) - this key exists and is simply wrong, not missing. Verified live via browser walkthrough of every Backoffice route (dashboard, products list/create/edit, categories list/create/edit/ reorder, orders list/detail, transactions list/detail+audit dialog, customers list/detail, moderation list+reports queue, users, monitoring, analytics, media library) at desktop and mobile widths. Console/network noise from the mock backoffice API 404ing locally is pre-existing and already documented (docs/ADMIN.md's prior bug-hunt audit pass) - not re-reported. Product create/edit CRUD already worked end-to-end (AdminProductsFacade injects its local gateway unconditionally, no swappable-provider mistake there). npx tsc --noEmit and npm run build both green (only the pre-existing 700kB initial-bundle budget warning, already tracked as out of scope). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Marketplace Frontend
Angular marketplace frontend for the client demonstration. The app uses standalone components, signals, runtime branding/configuration, and a production build optimized for the current marketplace experience.
Features
- Responsive marketplace storefront
- Category browsing and product detail pages
- Search and shopping cart flows
- Telegram login integration
- Payment handoff through the existing backend contract
- Runtime branding and configuration loading
- PWA manifest and service worker configuration
Development
Install dependencies:
npm install
Start the local development server:
npm start
Build for production:
npm run build
The production build is written to dist/dexarmarket/.
Project Structure
src/
├── app/
│ ├── components/ # Shared storefront components
│ ├── core/ # Runtime, config, guards, providers, interceptors
│ ├── dynamic-renderer/ # Page, section, and widget rendering pipeline
│ ├── facades/ # Runtime, website, builder, and backoffice facades
│ ├── pages/ # Storefront, info, legal, cart, search, and item pages
│ ├── services/ # API, cart, auth, SEO, Telegram, and language services
│ └── widgets/ # Dynamic renderer widgets
├── assets/mock/ # Local mock configuration and catalog data
├── environments/ # Development and production environment settings
└── styles/ # Shared global styles and themes
Useful Checks
npm run build
npm run arch:check
Notes
- Authentication and payment integrations are intentionally left on their existing contracts.
- Renderer and runtime architecture should remain stable during demo preparation.
- Client-facing content should avoid placeholder names, mock labels, and temporary routes.
Description
Languages
TypeScript
71.4%
HTML
15.3%
SCSS
11.9%
Shell
1.3%
JavaScript
0.1%