The /contacts route had no bootstrap.staticPages entry at all (the old hardcoded contacts page was intentionally removed per app.routes.ts's comment, in favor of the generic staticPath -> CMS resolver). Added a placeholder entry (route/title/html per locale) so the link resolves instead of 404ing. Placeholder text explicitly says the real contact details go through the admin panel - per user decision, real content belongs to whoever runs a given marketplace, not something to fabricate. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
513 lines
14 KiB
JSON
513 lines
14 KiB
JSON
{
|
||
"schemaVersion": "1.0.0",
|
||
"generatedAt": "2026-07-03T00:00:00Z",
|
||
"tenant": {
|
||
"id": "tenant-default-001",
|
||
"slug": "default",
|
||
"code": "DEFAULT",
|
||
"host": "default.local",
|
||
"name": "Marketplace",
|
||
"websiteBaseUrl": "https://marketplace.local",
|
||
"builderBaseUrl": "https://builder.marketplace.local",
|
||
"backofficeBaseUrl": "https://backoffice.marketplace.local",
|
||
"defaultLocale": "ru",
|
||
"supportedLocales": ["ru", "en", "hy"],
|
||
"defaultCurrency": "RUB",
|
||
"supportedCurrencies": ["RUB", "USD", "EUR", "AMD"],
|
||
"timezone": "Europe/Moscow",
|
||
"documentationUrl": "https://docs.marketplace.local"
|
||
},
|
||
"branding": {
|
||
"brandName": "Marketplace",
|
||
"legalName": "Marketplace LLC",
|
||
"slogan": "Digital commerce marketplace",
|
||
"logoUrl": "/icons/icon-192x192.png",
|
||
"logoCompactUrl": "/icons/icon-192x192.png",
|
||
"faviconUrl": "/favicon.ico",
|
||
"appIconUrl": "/icons/icon-192x192.png",
|
||
"supportEmail": "support@marketplace.local",
|
||
"supportPhone": "+7-900-000-00-00"
|
||
},
|
||
"theme": {
|
||
"themeId": "default-light",
|
||
"mode": "light",
|
||
"palette": {
|
||
"primary": "#497671",
|
||
"secondary": "#a1b4b5",
|
||
"accent": "#a7ceca",
|
||
"success": "#10b981",
|
||
"warning": "#f59e0b",
|
||
"danger": "#ef4444",
|
||
"info": "#3b82f6",
|
||
"textPrimary": "#1e3c38",
|
||
"textSecondary": "#667a77",
|
||
"backgroundPrimary": "#ffffff",
|
||
"backgroundSecondary": "#f5f5f5",
|
||
"border": "#d3dad9"
|
||
},
|
||
"typography": {
|
||
"primaryFontFamily": "DM Sans, sans-serif",
|
||
"headingFontFamily": "DM Sans, sans-serif",
|
||
"baseFontSize": 16
|
||
},
|
||
"spacing": {
|
||
"unit": 4,
|
||
"scale": [0, 4, 8, 12, 16, 24, 32, 48]
|
||
},
|
||
"borderRadiusScale": {
|
||
"sm": "8px",
|
||
"md": "12px",
|
||
"lg": "16px",
|
||
"xl": "22px"
|
||
},
|
||
"shadows": {
|
||
"sm": "0 2px 8px rgba(0,0,0,0.1)",
|
||
"md": "0 4px 12px rgba(0,0,0,0.15)",
|
||
"lg": "0 12px 32px rgba(73,118,113,0.2)"
|
||
},
|
||
"iconSet": "default"
|
||
},
|
||
"company": {
|
||
"companyName": "Marketplace LLC",
|
||
"registrationNumber": "1027700000000",
|
||
"taxId": "7700000000",
|
||
"address": {
|
||
"country": "Russia",
|
||
"region": "Moscow",
|
||
"city": "Moscow",
|
||
"street": "Tverskaya 1",
|
||
"postalCode": "125009"
|
||
},
|
||
"contacts": {
|
||
"email": "support@marketplace.local",
|
||
"phone": "+7-900-000-00-00",
|
||
"telegram": "@marketplace_support",
|
||
"website": "https://marketplace.local"
|
||
}
|
||
},
|
||
"featureFlags": {
|
||
"wishlist": true,
|
||
"compare": true,
|
||
"reviews": true,
|
||
"blog": false,
|
||
"chat": false,
|
||
"analytics": true,
|
||
"notifications": true,
|
||
"coupons": true,
|
||
"loyalty": false,
|
||
"giftCards": false,
|
||
"invoices": true
|
||
},
|
||
"apiEndpoints": {
|
||
"bootstrap": {
|
||
"path": "/bootstrap",
|
||
"method": "GET",
|
||
"timeoutMs": 10000
|
||
},
|
||
"website": {},
|
||
"builder": {},
|
||
"backoffice": {}
|
||
},
|
||
"localization": {
|
||
"defaultLocale": "ru",
|
||
"supportedLocales": ["ru", "en", "hy"],
|
||
"currencyByLocale": {
|
||
"ru": "RUB",
|
||
"en": "USD",
|
||
"hy": "AMD"
|
||
},
|
||
"dictionaries": [
|
||
{
|
||
"locale": "ru",
|
||
"dictionaryUrl": "/assets/i18n/ru.json",
|
||
"version": "1.0.0"
|
||
},
|
||
{
|
||
"locale": "en",
|
||
"dictionaryUrl": "/assets/i18n/en.json",
|
||
"version": "1.0.0"
|
||
},
|
||
{
|
||
"locale": "hy",
|
||
"dictionaryUrl": "/assets/i18n/hy.json",
|
||
"version": "1.0.0"
|
||
}
|
||
]
|
||
},
|
||
"seo": {
|
||
"default": {
|
||
"title": "Marketplace",
|
||
"description": "Digital commerce marketplace",
|
||
"robots": "index,follow"
|
||
},
|
||
"byPageKey": {
|
||
"home": {
|
||
"title": "Marketplace - Home",
|
||
"description": "Digital commerce marketplace",
|
||
"canonicalUrl": "https://marketplace.local/",
|
||
"robots": "index,follow"
|
||
}
|
||
}
|
||
},
|
||
"permissions": {
|
||
"definitions": [
|
||
{
|
||
"key": "builder.pages.edit",
|
||
"description": "Edit pages in builder"
|
||
},
|
||
{
|
||
"key": "backoffice.products.read",
|
||
"description": "Read products in backoffice"
|
||
}
|
||
],
|
||
"roles": [
|
||
{
|
||
"role": "builder_admin",
|
||
"permissions": ["builder.pages.edit"]
|
||
},
|
||
{
|
||
"role": "backoffice_manager",
|
||
"permissions": ["backoffice.products.read"]
|
||
}
|
||
]
|
||
},
|
||
"layout": {
|
||
"type": "default"
|
||
},
|
||
"navigation": {
|
||
"header": [
|
||
{
|
||
"id": "nav-home",
|
||
"labelKey": "nav.home",
|
||
"route": "/",
|
||
"icon": "home",
|
||
"order": 1
|
||
},
|
||
{
|
||
"id": "nav-search",
|
||
"labelKey": "nav.search",
|
||
"route": "/search",
|
||
"icon": "search",
|
||
"order": 2
|
||
},
|
||
{
|
||
"id": "nav-cart",
|
||
"labelKey": "nav.cart",
|
||
"route": "/cart",
|
||
"icon": "cart",
|
||
"order": 3
|
||
}
|
||
],
|
||
"footer": [
|
||
{
|
||
"id": "footer-about",
|
||
"labelKey": "nav.about",
|
||
"route": "/about-us",
|
||
"order": 1
|
||
},
|
||
{
|
||
"id": "footer-contacts",
|
||
"labelKey": "nav.contacts",
|
||
"route": "/contacts",
|
||
"order": 2
|
||
},
|
||
{
|
||
"id": "footer-privacy",
|
||
"labelKey": "nav.privacy",
|
||
"route": "/privacy-policy",
|
||
"order": 3
|
||
}
|
||
]
|
||
},
|
||
"footer": {
|
||
"paymentIcons": [
|
||
{
|
||
"src": "/assets/images/mir-logo.svg",
|
||
"alt": "MIR",
|
||
"width": 40,
|
||
"height": 28
|
||
},
|
||
{
|
||
"src": "/assets/images/visa-logo.svg",
|
||
"alt": "Visa",
|
||
"width": 40,
|
||
"height": 28
|
||
},
|
||
{
|
||
"src": "/assets/images/mastercard-logo.svg",
|
||
"alt": "Mastercard",
|
||
"width": 40,
|
||
"height": 28
|
||
}
|
||
],
|
||
"copyrightText": {
|
||
"ru": "© 2026 Marketplace. Все права защищены.",
|
||
"en": "© 2026 Marketplace. All rights reserved.",
|
||
"hy": "© 2026 Marketplace. Բոլոր իրավունքները պաշտպանված են:"
|
||
},
|
||
"legalPageKeys": ["about-us", "privacy-policy", "terms-of-service"]
|
||
},
|
||
"catalog": {
|
||
"layout": "grid",
|
||
"navigationMode": "default",
|
||
"defaultSort": "relevance",
|
||
"availableSorts": ["relevance", "latest", "price_asc", "price_desc", "rating", "popular", "discount"],
|
||
"enabledFilters": ["price", "availability", "rating", "brand", "category", "subcategory", "discount", "new", "color", "size", "attributes"],
|
||
"showBreadcrumbs": true,
|
||
"showCategoryBanner": true,
|
||
"showSubcategoryChips": true,
|
||
"showRatings": true,
|
||
"showDiscounts": true,
|
||
"showAvailability": true,
|
||
"suggestionsEnabled": true,
|
||
"searchHistoryEnabled": true
|
||
},
|
||
"productPage": {
|
||
"rating": {
|
||
"enabled": true
|
||
},
|
||
"reviews": {
|
||
"enabled": true,
|
||
"pageSize": 5,
|
||
"showSummary": true
|
||
},
|
||
"questions": {
|
||
"enabled": true,
|
||
"pageSize": 5
|
||
},
|
||
"tabs": {
|
||
"enabled": true,
|
||
"items": ["description", "specifications", "reviews", "questions", "delivery", "warranty"]
|
||
},
|
||
"relatedProducts": {
|
||
"enabled": true
|
||
}
|
||
},
|
||
"userExperience": {
|
||
"wishlist": {
|
||
"enabled": true,
|
||
"headerBadgeEnabled": true
|
||
},
|
||
"compare": {
|
||
"enabled": true,
|
||
"maxItems": 4,
|
||
"hideIdenticalDefault": false,
|
||
"highlightDifferencesDefault": true
|
||
},
|
||
"recentlyViewed": {
|
||
"enabled": true,
|
||
"maxItems": 12,
|
||
"widgetEnabled": true
|
||
},
|
||
"share": {
|
||
"enabled": true
|
||
},
|
||
"continueBrowsing": {
|
||
"enabled": true
|
||
},
|
||
"savedSearches": {
|
||
"enabled": true,
|
||
"maxItems": 10
|
||
}
|
||
},
|
||
"widgetRegistry": {
|
||
"manifestUrl": "/assets/mock/bootstrap/widget-manifest.json"
|
||
},
|
||
"staticPages": {
|
||
"about-us": {
|
||
"route": "/about-us",
|
||
"title": {
|
||
"ru": "О компании",
|
||
"en": "About Us",
|
||
"hy": "Մեր մասին"
|
||
},
|
||
"html": {
|
||
"ru": "<h2>О компании</h2><p>Marketplace — мультиарендная B2B commerce-платформа.</p>",
|
||
"en": "<h2>About Us</h2><p>Marketplace is a multi-tenant B2B commerce platform.</p>",
|
||
"hy": "<h2>Մեր մասին</h2><p>Marketplace-ը բազմավարձակալ B2B առևտրային հարթակ է։</p>"
|
||
}
|
||
},
|
||
"privacy-policy": {
|
||
"route": "/privacy-policy",
|
||
"title": {
|
||
"ru": "Политика конфиденциальности",
|
||
"en": "Privacy Policy",
|
||
"hy": "Գաղտնիության քաղաքականություն"
|
||
},
|
||
"html": {
|
||
"ru": "<h2>Политика конфиденциальности</h2><p>Мы обрабатываем только необходимые данные.</p>",
|
||
"en": "<h2>Privacy Policy</h2><p>We process only the data required for service operations.</p>",
|
||
"hy": "<h2>Գաղտնիության քաղաքականություն</h2><p>Մենք մշակում ենք միայն ծառայության համար անհրաժեշտ տվյալները։</p>"
|
||
}
|
||
},
|
||
"terms-of-service": {
|
||
"route": "/terms-of-service",
|
||
"title": {
|
||
"ru": "Условия использования",
|
||
"en": "Terms of Service",
|
||
"hy": "Օգտագործման պայմաններ"
|
||
},
|
||
"html": {
|
||
"ru": "<h2>Условия использования</h2><p>Использование платформы регулируется публичной офертой.</p>",
|
||
"en": "<h2>Terms of Service</h2><p>Platform usage is governed by public offer terms.</p>",
|
||
"hy": "<h2>Օգտագործման պայմաններ</h2><p>Հարթակի օգտագործումը կարգավորվում է հրապարակային առաջարկի պայմաններով։</p>"
|
||
}
|
||
},
|
||
"contacts": {
|
||
"route": "/contacts",
|
||
"title": {
|
||
"ru": "Контакты",
|
||
"en": "Contacts",
|
||
"hy": "Կապ"
|
||
},
|
||
"html": {
|
||
"ru": "<h2>Контакты</h2><p>Здесь будет размещена контактная информация продавца — адрес, телефон, email и часы работы. Заполняется администратором маркетплейса.</p>",
|
||
"en": "<h2>Contacts</h2><p>Seller contact details (address, phone, email, business hours) go here. Fill this in from the admin panel.</p>",
|
||
"hy": "<h2>Կապ</h2><p>Այստեղ կտեղադրվի վաճառողի կոնտակտային տեղեկատվությունը՝ հասցե, հեռախոս, էլ. փոստ և աշխատանքային ժամեր։ Լրացվում է կայքի ադմինիստրատորի կողմից։</p>"
|
||
}
|
||
}
|
||
},
|
||
"pages": [
|
||
{
|
||
"id": "page-home",
|
||
"key": "home",
|
||
"title": "Home",
|
||
"route": {
|
||
"path": "/",
|
||
"exact": true
|
||
},
|
||
"layout": {
|
||
"type": "default"
|
||
},
|
||
"seoKey": "home",
|
||
"visible": true,
|
||
"sections": [
|
||
{
|
||
"id": "section-hero",
|
||
"type": "hero",
|
||
"order": 1,
|
||
"layout": {
|
||
"strategy": "hero",
|
||
"columns": 1,
|
||
"gap": "1.5rem",
|
||
"align": "stretch"
|
||
},
|
||
"visibility": {
|
||
"desktop": true,
|
||
"tablet": true,
|
||
"mobile": true
|
||
},
|
||
"visible": true,
|
||
"widgets": [
|
||
{
|
||
"id": "widget-hero-main",
|
||
"type": "hero",
|
||
"version": "1.0.0",
|
||
"order": 1,
|
||
"padding": "0.5rem 0",
|
||
"visibility": {
|
||
"desktop": true,
|
||
"tablet": true,
|
||
"mobile": true
|
||
},
|
||
"visible": true,
|
||
"props": {
|
||
"title": {
|
||
"ru": "Добро пожаловать на Маркетплейс",
|
||
"en": "Welcome to Marketplace Platform",
|
||
"hy": "Բարի գալուստ Մարքեթփլեյս"
|
||
},
|
||
"subtitle": {
|
||
"ru": "Конфигурируемая мультитенантная торговая площадка",
|
||
"en": "Configuration-driven multi-tenant commerce",
|
||
"hy": "Կոնֆիգուրացիայով կառավարվող բազմատենանտ առևտրի հարթակ"
|
||
},
|
||
"ctaLabel": {
|
||
"ru": "Начать покупки",
|
||
"en": "Start Shopping",
|
||
"hy": "Սկսել գնումները"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "section-categories",
|
||
"type": "categories",
|
||
"order": 2,
|
||
"layout": {
|
||
"strategy": "grid",
|
||
"columns": 1,
|
||
"gap": "1.5rem",
|
||
"align": "stretch"
|
||
},
|
||
"visibility": {
|
||
"desktop": true,
|
||
"tablet": true,
|
||
"mobile": true
|
||
},
|
||
"visible": true,
|
||
"widgets": [
|
||
{
|
||
"id": "widget-categories-root",
|
||
"type": "categories",
|
||
"version": "1.0.0",
|
||
"order": 1,
|
||
"padding": "0.25rem 0",
|
||
"visibility": {
|
||
"desktop": true,
|
||
"tablet": true,
|
||
"mobile": true
|
||
},
|
||
"visible": true,
|
||
"props": {
|
||
"title": "Categories",
|
||
"source": "root",
|
||
"emptyMessage": "No categories available"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "section-featured-products",
|
||
"type": "product-collection",
|
||
"order": 3,
|
||
"layout": {
|
||
"strategy": "carousel",
|
||
"columns": 1,
|
||
"gap": "1rem",
|
||
"align": "stretch"
|
||
},
|
||
"visibility": {
|
||
"desktop": true,
|
||
"tablet": true,
|
||
"mobile": true
|
||
},
|
||
"visible": true,
|
||
"widgets": [
|
||
{
|
||
"id": "widget-featured-products",
|
||
"type": "product-collection",
|
||
"version": "1.0.0",
|
||
"order": 1,
|
||
"padding": "0",
|
||
"visibility": {
|
||
"desktop": true,
|
||
"tablet": true,
|
||
"mobile": true
|
||
},
|
||
"visible": true,
|
||
"props": {
|
||
"title": "Featured Products",
|
||
"source": "featured",
|
||
"count": 8,
|
||
"actionLabel": "Select"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|