68be41e7a2
# 项目概述 个人浏览器首页导航应用,支持书签分类管理、搜索引擎快捷搜索、 必应每日壁纸轮播、前后端分离部署,适配 1Panel 服务器(Docker 模式)。 # 技术栈 - 前端:Vue 3 + TypeScript + Vite + Pinia + Capacitor(Android 打包) - 后端:.NET 8 + SqlSugar(多数据库) + SQLite/MySQL + Swashbuckle - 部署:1Panel 应用商店自定义应用(Docker Compose 模式) # 项目结构 - backend/ .NET 8 API 后端(8 个 Controller + 15 个 Service) - frontend/ Vue 3 前端(19 个组件 + 9 个 API 模块 + 5 个 Store) - docker/ Docker 部署文件(后端镜像 + Nginx 反代) - docs/ 部署手册(1Panel 实战版) - scripts/ E2E 测试脚本 # 已实现功能 - 书签管理:增删改查 + 树形分类 + 拖拽排序 + 主色自适应 - 搜索引擎:8 个内置引擎 + 自定义引擎 + favicon 自动抓取 - 必应壁纸:每日轮播 + 多分辨率自动选择 + 1.6MP 质量优先 - 全局设置:主题/行为/数据/工具 4 分类 + 跨设备同步 - 文件上传:图标/书签/通用(容器持久化 + 跨域 URL 拼接) - 同步:基于变更日志的设备间数据同步 - 跨域部署:前后端分离 + runtime config.json 无需重新编译 # 进度记录 - 已完成 P0~P52 共 53 个开发节点(详细见 说明文档.md) - 当前版本:v1.0 部署就绪 # 部署文档 - README.md:项目说明 + 快速开始 - 说明文档.md:完整开发进度(中文) - docs/DEPLOY.md:1Panel 部署手册(Docker 模式)
209 lines
9.4 KiB
JSON
209 lines
9.4 KiB
JSON
{
|
|
"project": {
|
|
"name": "浏览器首页",
|
|
"path": "D:\\Code\\MyHomePage\\browser-homepage",
|
|
"operation": "create",
|
|
"deviceType": "desktop",
|
|
"language": "zh-CN",
|
|
"dashboardMode": false,
|
|
"replicationMode": null,
|
|
"sourceUrl": null,
|
|
"visualSpecExcerpt": null,
|
|
"styleDefinitionBrief": "Dark glassmorphism browser start page, cool neutral dark palette with purple accent, Inter + Noto Sans SC, dense information layout with sidebar navigation and card grid, gaming-inspired aesthetic",
|
|
"designRead": "Browser homepage / power users / dark glassmorphism utility / medium-high density / avoid pastel or light themes",
|
|
"designDials": {
|
|
"layoutVariance": 2,
|
|
"motionIntensity": 2,
|
|
"visualDensity": 4
|
|
},
|
|
"styleContinuityAnchors": {
|
|
"colorSystem": {
|
|
"primaryColorRole": "Purple accent (#6c5ce7) for active states and interactive elements",
|
|
"brandHuePolicy": "Dark base palette with single purple brand hue; categories and identities use text/icons/neutral tints",
|
|
"stateColors": "success/warning/error/info semantic tokens for status indicators"
|
|
},
|
|
"shapeSystem": "Rounded corners, radius scale 4-16px, glassmorphism cards with subtle borders",
|
|
"typographySystem": "Inter + Noto Sans SC, sans-serif only, clean weight hierarchy 300-700",
|
|
"spacingSystem": "Compact 4-8-12-16-20-24 rhythm, dense sidebar + spacious card grid",
|
|
"componentLanguage": "Glass cards with translucent backgrounds, subtle borders, no heavy shadows on static elements",
|
|
"surfaceAndDepth": "Static surfaces use border + translucent bg; floating layers (dropdown, modal) use deeper shadows alpha 0.25-0.35",
|
|
"imageryAndIconography": "SVG icons for navigation, brand favicons for link cards, dark background aesthetic",
|
|
"interactionTone": "Subtle hover feedback, smooth transitions, clean focus states"
|
|
},
|
|
"specsConstraints": null,
|
|
"sharedProjectShellContract": {
|
|
"navigationShell": "Left sidebar with two-level category navigation, collapsible on mobile",
|
|
"primaryColorSystem": "Single purple accent hue #6c5ce7 for active states and primary interactions",
|
|
"typographySystem": "Inter + Noto Sans SC, text-xs(11px) to text-3xl(32px), weights 300-700",
|
|
"radiusScale": "sm:4px, md:8px, lg:12px, xl:16px, full:9999px",
|
|
"surfaceDepthModel": "Static surfaces: border + translucent bg, shadow alpha <=0.05. Floating layers: shadow alpha 0.25-0.35",
|
|
"ctaStyle": "Rounded buttons with glass effect, subtle hover transitions",
|
|
"alignmentRules": "Left-aligned content areas, centered search bar, grid layout for cards"
|
|
},
|
|
"generationTree": {
|
|
"root": {
|
|
"nodeId": "gen-project-shell",
|
|
"kind": "project-shell",
|
|
"pageIds": ["page-desktop", "page-desktop-settings", "page-mobile"],
|
|
"output": "partials/project-shell.html",
|
|
"sharedRegions": ["brand css variables", "color palette", "glassmorphism mixin"],
|
|
"privateRegions": [],
|
|
"mutableSlots": ["pageTitle", "viewportLayout"],
|
|
"status": "generated",
|
|
"children": [
|
|
{
|
|
"nodeId": "gen-page-desktop",
|
|
"kind": "page-leaf",
|
|
"pageIds": ["page-desktop"],
|
|
"output": "pages/desktop.html",
|
|
"sharedRegions": [],
|
|
"privateRegions": ["sidebar with two-level nav", "search bar with engine selector", "link card grid"],
|
|
"mutableSlots": ["pageTitle"],
|
|
"status": "generated",
|
|
"children": []
|
|
},
|
|
{
|
|
"nodeId": "gen-page-desktop-settings",
|
|
"kind": "page-leaf",
|
|
"pageIds": ["page-desktop-settings"],
|
|
"output": "pages/desktop-settings.html",
|
|
"sharedRegions": [],
|
|
"privateRegions": ["settings popover panel", "theme switch (light/dark/auto)", "accent color picker", "background image picker"],
|
|
"mutableSlots": ["pageTitle"],
|
|
"status": "generated",
|
|
"children": []
|
|
},
|
|
{
|
|
"nodeId": "gen-page-mobile",
|
|
"kind": "page-leaf",
|
|
"pageIds": ["page-mobile"],
|
|
"output": "pages/mobile.html",
|
|
"sharedRegions": [],
|
|
"privateRegions": ["top row hamburger + search + settings gear", "navigation drawer with avatar/profile", "vertical link list", "FAB"],
|
|
"mutableSlots": ["pageTitle"],
|
|
"status": "generated",
|
|
"children": []
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"designSource": {
|
|
"operatingMode": "free-explore",
|
|
"libraryIdentity": {
|
|
"name": null,
|
|
"id": null,
|
|
"version": null,
|
|
"scope": null,
|
|
"path": null,
|
|
"versionSource": null
|
|
},
|
|
"cssFilePath": "D:\\Code\\MyHomePage\\browser-homepage\\colors_and_type.css",
|
|
"brandPrefix": "bh",
|
|
"themeMode": "dark",
|
|
"designDecisionSummary": "Dark glassmorphism theme with purple accent, translucent cards, two-level sidebar navigation, Inter+Noto Sans SC typography",
|
|
"styleConstraints": {
|
|
"radiusMax": 16,
|
|
"spacingBase": 4,
|
|
"fontSizeBody": 14,
|
|
"fontSizeMin": 11,
|
|
"controlHeightDefault": 36,
|
|
"controlHeightLarge": 42
|
|
},
|
|
"productContext": {
|
|
"kitType": null,
|
|
"productType": "Browser homepage / navigation tool"
|
|
},
|
|
"actualTokenNameReference": []
|
|
},
|
|
"pages": [
|
|
{
|
|
"nodeId": "page-desktop",
|
|
"slug": "desktop",
|
|
"title": "浏览器首页 - 桌面端",
|
|
"htmlSrc": "pages/desktop.html",
|
|
"pageIndex": 1,
|
|
"stateGroupId": null,
|
|
"stateRole": null,
|
|
"baseStatePageId": null,
|
|
"sharedShellContract": [],
|
|
"mutableRegions": [],
|
|
"derivedFromHtmlSrc": null,
|
|
"derivationType": "original",
|
|
"sourcePageId": null,
|
|
"sourceHtmlSrc": null,
|
|
"pageType": "information-dense",
|
|
"businessScenario": "Desktop browser homepage with two-level category sidebar, search bar with engine selector, and link card grid",
|
|
"visualNorthStar": "Dark glassmorphism sidebar + translucent card grid, dense information architecture, purple accent highlights",
|
|
"compositionPattern": "Two-column asymmetric layout: fixed sidebar (20% width) + scrollable main content (80% width)",
|
|
"continuityAnchors": ["dark glassmorphism card style", "purple accent for active states", "Inter + Noto Sans SC typography"],
|
|
"libraryRestraintMode": false,
|
|
"uiKitPath": null,
|
|
"componentPlan": [],
|
|
"imagePlan": [],
|
|
"chartsRequired": false,
|
|
"miniProgramStyle": false,
|
|
"qualityRisks": ["dense sidebar navigation may need careful spacing", "two-level nav expand/collapse interaction"]
|
|
},
|
|
{
|
|
"nodeId": "page-desktop-settings",
|
|
"slug": "desktop-settings",
|
|
"title": "浏览器首页 - 桌面端 - 设置面板",
|
|
"htmlSrc": "pages/desktop-settings.html",
|
|
"pageIndex": 2,
|
|
"stateGroupId": null,
|
|
"stateRole": null,
|
|
"baseStatePageId": null,
|
|
"sharedShellContract": [],
|
|
"mutableRegions": [],
|
|
"derivedFromHtmlSrc": "pages/desktop.html",
|
|
"derivationType": "comparison-from-source",
|
|
"sourcePageId": "page-desktop",
|
|
"sourceHtmlSrc": "pages/desktop.html",
|
|
"pageType": "information-dense",
|
|
"businessScenario": "Desktop browser homepage with the settings popover panel opened, showing theme/accent/background controls",
|
|
"visualNorthStar": "Same dark glassmorphism base as desktop page, with floating settings popover anchored to the settings button, dimmed background",
|
|
"compositionPattern": "Source page layout skeleton + floating settings popover (right-aligned) anchored from the settings button",
|
|
"continuityAnchors": ["dark glassmorphism card style", "purple accent for active states", "Inter + Noto Sans SC typography"],
|
|
"libraryRestraintMode": false,
|
|
"uiKitPath": null,
|
|
"componentPlan": [],
|
|
"imagePlan": [],
|
|
"chartsRequired": false,
|
|
"miniProgramStyle": false,
|
|
"qualityRisks": ["popover must not overlap sidebar critical content", "background dim layer should not fully hide source context"]
|
|
},
|
|
{
|
|
"nodeId": "page-mobile",
|
|
"slug": "mobile",
|
|
"title": "浏览器首页 - 移动端",
|
|
"htmlSrc": "pages/mobile.html",
|
|
"pageIndex": 3,
|
|
"stateGroupId": null,
|
|
"stateRole": null,
|
|
"baseStatePageId": null,
|
|
"sharedShellContract": [],
|
|
"mutableRegions": [],
|
|
"derivedFromHtmlSrc": null,
|
|
"derivationType": "original",
|
|
"sourcePageId": null,
|
|
"sourceHtmlSrc": null,
|
|
"pageType": "information-dense",
|
|
"businessScenario": "Mobile browser homepage with single-row top bar (hamburger + search + settings gear), avatar/profile relocated into hamburger drawer, vertical link list and FAB",
|
|
"visualNorthStar": "Compact mobile-first dark layout, single-row top bar with hamburger + search + gear, drawer for categories + profile",
|
|
"compositionPattern": "Single-column mobile layout: single-row top bar + horizontal category tabs + vertical link list + bottom-right FAB",
|
|
"continuityAnchors": ["dark glassmorphism card style", "purple accent for active states", "Inter + Noto Sans SC typography"],
|
|
"libraryRestraintMode": false,
|
|
"uiKitPath": null,
|
|
"componentPlan": [],
|
|
"imagePlan": [],
|
|
"chartsRequired": false,
|
|
"miniProgramStyle": false,
|
|
"qualityRisks": ["top row three elements must not crowd search input", "touch targets must be >= 44px"]
|
|
}
|
|
],
|
|
"assets": [],
|
|
"wiringPlan": [],
|
|
"hiddenInteractionPlan": []
|
|
}
|