# PURO AI · Landing + Auth + Docs Implementation Plan > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** 在 `ai.puro.im` 上线 PURO AI 品牌化的 Landing、Login、Register、Docs 四个页面,落地 `puro.css` 作为全站新设计系统,保持所有后台页面和现有 Auth 逻辑不变。 **Architecture:** 复用 Claude Design 产出的 `docs/design-drafts/v2/` 静态 HTML,翻译成 Vue 3 SFC 组件,CSS 通过全局引入 `puro.css`(含 tokens + primitives),路由改造让 `/` 根据登录态动态展示 Landing 或 Dashboard。所有 hardcoded 中文通过 vue-i18n 的 `zh.ts` 集中管理。 **Tech Stack:** Vue 3.4+ (Composition API, TypeScript), Vue Router 4, vue-i18n, Pinia, Tailwind CSS(保留 legacy primary 色板不动),Vite 5, pnpm 10, vitest(router 用)。 **Spec:** `docs/superpowers/specs/2026-04-19-puro-ai-landing-auth-design.md`(第 3/4/4.5/6 节为本计划权威依据) **Branch:** `feat/design-landing-auth`(已创建 · 当前 HEAD `3a16b3ec`) --- ## 文件结构 ``` frontend/ ├── index.html ← MODIFY 加 Google Fonts preconnect + link ├── src/ │ ├── assets/ │ │ └── puro.css ← NEW 复制 docs/design-drafts/v2/puro.css │ ├── main.ts ← MODIFY import './assets/puro.css' │ ├── router/ │ │ └── index.ts ← MODIFY `/` auth-aware + `/docs` public │ ├── views/ │ │ ├── landing/ │ │ │ └── LandingView.vue ← NEW 6 sections, dashboard mockup 静态 │ │ ├── docs/ │ │ │ └── DocsView.vue ← NEW 6 subsections, curl/codex/claude-code 示例 │ │ └── auth/ │ │ ├── LoginView.vue ← MODIFY 套新 narrative slot + 小幅改文案 │ │ └── RegisterView.vue ← MODIFY 同上 │ ├── components/ │ │ └── layout/ │ │ └── AuthLayout.vue ← MODIFY 加 `narrative` 命名 slot(条件渲染) │ └── i18n/ │ └── locales/ │ └── zh.ts ← MODIFY 新增 `landing.*` / `docs.*` / 扩 `auth.*` └── tailwind.config.js ← MODIFY extend color 加 puro.* 家族(给 Vue 用) ``` **不动的文件**:所有 `views/admin/**`、`views/user/**`、`views/setup/**`、`App.vue`、`AppHeader/AppLayout/AppSidebar.vue`、backend 全部。 **设计决策**: - `puro.css` 里已有的 primitives class(`.btn-primary`, `.card`, `.input` 等)直接用 class 引用,**不抽 Vue 组件**(减少 scope 膨胀) - Tailwind 现有 `primary`(teal #14b8a6)**不改**——admin 页还用。新加 `puro.cyan` / `puro.purple` / `puro.amber` 等命名空间,新页面用 `text-puro-cyan` 类 - i18n 只补 `zh.ts`(本期默认中文);`en.ts` 键留空或复用 `zh` 值 --- ## Task 1: 引入 puro.css 设计系统 + Google Fonts **Files:** - Create: `frontend/src/assets/puro.css` - Modify: `frontend/src/main.ts:7` - Modify: `frontend/index.html` - [ ] **Step 1: 复制 puro.css 到 assets** ```bash cp /Users/mini/Work/dev/sub2api/docs/design-drafts/v2/puro.css \ /Users/mini/Work/dev/sub2api/frontend/src/assets/puro.css ``` - [ ] **Step 2: 在 main.ts 里 import(紧接 style.css)** Modify `frontend/src/main.ts`,把第 7 行: ```ts import './style.css' ``` 改为: ```ts import './style.css' import './assets/puro.css' ``` - [ ] **Step 3: 在 index.html `
` 里加 Google Fonts preconnect + link** Modify `frontend/index.html`,在 `` 里(`
Claude Pro · ChatGPT Plus · Codex · Gemini 订阅
聚合成统一 API,零改动接入 OpenAI / Anthropic SDK
无需申请官方 API key,也无需切换账号
不再为每个 provider 申请 API key、配置 base_url。统一 sk- 走 Claude / GPT / Gemini,按 model 自动路由到对应账号池。
支持多账号自动调度与 failover。某个上游触发限流 / 冷却时,流量切到下一个健康账号,token 刷新全自动。
每条请求的 tokens、费用、上游账号、延迟全可视化。模型分布饼图 + 趋势曲线 + Top 排行。
5 分钟开始用 PURO AI
``` - [ ] **Step 4: 把 LoginView 的 narrative ` ``` - [ ] **Step 2: 在 router/index.ts 注册 `/docs` public route** 插入(在 `/home` 附近的 Public Routes 区): ```ts { path: '/docs', name: 'Docs', component: () => import('@/views/docs/DocsView.vue'), meta: { requiresAuth: false, title: 'PURO AI · 文档' } }, ``` - [ ] **Step 3: 验证** Run: ```bash cd /Users/mini/Work/dev/sub2api/frontend && pnpm run dev ``` http://localhost:5173/docs Expected: - 顶部 sticky nav(⬢ PURO AI / 首页 / Codex / Claude Code / curl / 登录) - Hero:"快速接入 PURO AI" - 6 个 numbered sections - 代码块深色高亮 点 Nav 里的 "Codex" / "Claude Code" / "curl" 锚点会跳到对应段。 停掉 dev server。 - [ ] **Step 4: 提交** ```bash cd /Users/mini/Work/dev/sub2api git add frontend/src/views/docs/DocsView.vue frontend/src/router/index.ts git commit -m "feat(docs): public DocsView with Codex/Claude Code/curl quickstart Public route /docs, no auth required. Six sections: get key, codex CLI config, claude code settings, curl smoke test, supported models, feedback. Co-Authored-By: Claude Opus 4.7 (1M context){{ t('auth.puroLoginSub') }}
``` RegisterView 同理用 `auth.puroRegisterTitle` / `auth.puroRegisterSub`。 - [ ] **Step 4: 验证 zh.ts 没语法错误** Run: ```bash cd /Users/mini/Work/dev/sub2api/frontend && pnpm run type-check 2>&1 | tail -5 ``` Expected: 无 TypeScript 错误。 - [ ] **Step 5: dev server 确认 heading 显示正确** ```bash cd /Users/mini/Work/dev/sub2api/frontend && pnpm run dev ``` http://localhost:5173/login → heading "登录" http://localhost:5173/register → heading "创建账户" 停掉 dev server。 - [ ] **Step 6: 提交** ```bash cd /Users/mini/Work/dev/sub2api git add frontend/src/i18n/locales/zh.ts frontend/src/views/auth/LoginView.vue frontend/src/views/auth/RegisterView.vue git commit -m "chore(i18n): consolidate PURO auth heading keys into zh.ts Landing and Docs text remain hardcoded Chinese this cycle (see spec §6 Note 5). Only Login/Register heading strings are moved into i18n. Co-Authored-By: Claude Opus 4.7 (1M context)