139 lines
2.7 KiB
Markdown
139 lines
2.7 KiB
Markdown
|
|
# Marketplace Project Editor - Sprint 13
|
||
|
|
|
||
|
|
## Scope
|
||
|
|
|
||
|
|
Sprint 13 introduces first version of Marketplace Project Editor.
|
||
|
|
|
||
|
|
Editor only manages bootstrap configuration.
|
||
|
|
|
||
|
|
Out of scope:
|
||
|
|
- products
|
||
|
|
- categories
|
||
|
|
- orders
|
||
|
|
- analytics management
|
||
|
|
|
||
|
|
## Architecture
|
||
|
|
|
||
|
|
```text
|
||
|
|
src/app/features/project-editor/
|
||
|
|
pages/
|
||
|
|
components/
|
||
|
|
sections/
|
||
|
|
models/
|
||
|
|
services/
|
||
|
|
facade/
|
||
|
|
```
|
||
|
|
|
||
|
|
Editor uses strongly typed bootstrap models and isolated feature state.
|
||
|
|
Components do not call APIs directly.
|
||
|
|
|
||
|
|
## Facade API
|
||
|
|
|
||
|
|
`ProjectEditorFacade` exposes:
|
||
|
|
- `loadBootstrap()`
|
||
|
|
- `updateBootstrap()`
|
||
|
|
- `exportBootstrap()`
|
||
|
|
- `importBootstrap()`
|
||
|
|
- `preview()`
|
||
|
|
|
||
|
|
Current source of truth:
|
||
|
|
- existing bootstrap provider via `ConfigService`
|
||
|
|
|
||
|
|
Future backend integration:
|
||
|
|
- replace local import/export/save flow with builder endpoints
|
||
|
|
- keep component contracts unchanged
|
||
|
|
|
||
|
|
## Supported Sections
|
||
|
|
|
||
|
|
- General
|
||
|
|
- marketplace name
|
||
|
|
- domain
|
||
|
|
- description
|
||
|
|
- default language
|
||
|
|
- supported languages
|
||
|
|
- Branding
|
||
|
|
- logo
|
||
|
|
- small logo
|
||
|
|
- favicon
|
||
|
|
- marketplace title
|
||
|
|
- Theme
|
||
|
|
- palette tokens via color pickers
|
||
|
|
- Header
|
||
|
|
- logo/search/categories/languages/cart/profile/wishlist/compare/region toggles
|
||
|
|
- Footer
|
||
|
|
- company information
|
||
|
|
- address
|
||
|
|
- phone
|
||
|
|
- email
|
||
|
|
- copyright
|
||
|
|
- payment icons
|
||
|
|
- social links
|
||
|
|
- static pages
|
||
|
|
- Homepage
|
||
|
|
- home page sections list
|
||
|
|
- visibility
|
||
|
|
- order
|
||
|
|
- layout
|
||
|
|
- drag-and-drop ordering
|
||
|
|
- Widgets
|
||
|
|
- homepage widget configuration
|
||
|
|
- typed shortcuts for hero/categories/product collection widgets
|
||
|
|
- JSON fallback for other widget props
|
||
|
|
- Marketplace Features
|
||
|
|
- feature flags
|
||
|
|
- search suggestions/history
|
||
|
|
- recently viewed
|
||
|
|
- reviews/questions/recommendations
|
||
|
|
- Preview
|
||
|
|
- export JSON
|
||
|
|
- import JSON
|
||
|
|
- runtime preview without full browser refresh
|
||
|
|
|
||
|
|
## Preview Strategy
|
||
|
|
|
||
|
|
Preview updates bootstrap snapshot in memory and re-applies:
|
||
|
|
- theme
|
||
|
|
- branding
|
||
|
|
- runtime state
|
||
|
|
- route-based page rendering on next Angular navigation
|
||
|
|
|
||
|
|
This keeps bootstrap engine intact while enabling fast local preview.
|
||
|
|
|
||
|
|
## Widget Configuration
|
||
|
|
|
||
|
|
Current widget editor supports explicit fields for:
|
||
|
|
- Hero
|
||
|
|
- layout
|
||
|
|
- height
|
||
|
|
- overlay
|
||
|
|
- autoplay
|
||
|
|
- Categories
|
||
|
|
- layout
|
||
|
|
- columns
|
||
|
|
- Product Collection
|
||
|
|
- layout
|
||
|
|
- cards per row
|
||
|
|
- filters
|
||
|
|
- badges
|
||
|
|
- rating
|
||
|
|
- price
|
||
|
|
|
||
|
|
Other widgets use JSON props fallback until dedicated editors are added.
|
||
|
|
|
||
|
|
## Future Backend Endpoints
|
||
|
|
|
||
|
|
Recommended future builder endpoints:
|
||
|
|
- `GET /builder/bootstrap`
|
||
|
|
- `PUT /builder/bootstrap`
|
||
|
|
- `POST /builder/bootstrap/preview`
|
||
|
|
- `POST /builder/bootstrap/validate`
|
||
|
|
- `POST /builder/bootstrap/import`
|
||
|
|
- `GET /builder/bootstrap/export`
|
||
|
|
|
||
|
|
## Constraints
|
||
|
|
|
||
|
|
- runtime bootstrap engine not replaced
|
||
|
|
- configuration stays source of truth
|
||
|
|
- no hardcoded marketplace values
|
||
|
|
- no business domain management mixed into editor
|