# 2026-05-24 · 肥猫码字平台 · Phase 1 网页搭建 · 复制粘贴执行 ## 📋 任务 **日期**:2026-05-24 **执行人**:肥猫(复制粘贴) + 霜砚(出代码) **目标**:把首页+路由骨架+深色主题全部做好 **前置**:Phase 1 地基已通(Next.js 跑在 3002 端口) --- ## Step 1 · 配 Tailwind 深色主题 打开终端,SSH 进新加坡服务器,执行: ```bash cat > ~/feimao-platform/tailwind.config.ts << 'ENDOFFILE' import type { Config } from "tailwindcss"; const config: Config = { content: [ "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", "./src/components/**/*.{js,ts,jsx,tsx,mdx}", "./src/app/**/*.{js,ts,jsx,tsx,mdx}", ], darkMode: "class", theme: { extend: { colors: { dark: { bg: "#0a0a0f", card: "#12121a", border: "#1e1e2e", text: "#e0e0e6", muted: "#6b6b80", accent: "#6366f1", glow: "#818cf8", }, }, fontFamily: { sans: ['"Inter"', '"Noto Sans SC"', "system-ui", "sans-serif"], mono: ['"JetBrains Mono"', '"Fira Code"', "monospace"], }, }, }, plugins: [], }; export default config; ENDOFFILE ``` 看到命令行回到 `$` 提示符就是成功了。 --- ## Step 2 · 全局样式(v3 光湖质感版) ```bash cat > ~/feimao-platform/src/app/globals.css << 'ENDOFFILE' @tailwind base; @tailwind components; @tailwind utilities; :root { --bg: #0c0e1e; --bg2: #111333; --text: #eeeef4; --muted: #9090aa; --accent: #7c6aef; --glow: #a78bfa; } body { background: linear-gradient(160deg, #0c0e1e 0%, #111333 40%, #0f1028 70%, #0a0c1a 100%); color: var(--text); font-family: 'Inter', 'Noto Sans SC', system-ui, sans-serif; overflow-x: hidden; min-height: 100vh; } ::selection { background: rgba(124,106,239,0.35); color: #fff; } ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.2); } /* 星空背景 */ .starfield { position: fixed; inset: 0; background: radial-gradient(1.2px 1.2px at 10% 20%, rgba(255,255,255,0.7), transparent), radial-gradient(1px 1px at 25% 45%, rgba(255,255,255,0.5), transparent), radial-gradient(1.5px 1.5px at 40% 15%, rgba(167,139,250,0.7), transparent), radial-gradient(1px 1px at 55% 70%, rgba(255,255,255,0.5), transparent), radial-gradient(1px 1px at 70% 35%, rgba(255,255,255,0.4), transparent), radial-gradient(1.5px 1.5px at 85% 60%, rgba(124,106,239,0.6), transparent), radial-gradient(1px 1px at 15% 80%, rgba(255,255,255,0.5), transparent), radial-gradient(1px 1px at 90% 10%, rgba(255,255,255,0.3), transparent), radial-gradient(1px 1px at 35% 90%, rgba(167,139,250,0.5), transparent), radial-gradient(1px 1px at 60% 50%, rgba(255,255,255,0.4), transparent), radial-gradient(1.5px 1.5px at 5% 55%, rgba(255,255,255,0.5), transparent), radial-gradient(1px 1px at 78% 85%, rgba(124,106,239,0.4), transparent); pointer-events: none; z-index: 0; } /* 璃璆拟态 */ .glass { background: rgba(255,255,255,0.04); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255,255,255,0.08); border-radius: 20px; } .glass-sm { background: rgba(255,255,255,0.06); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid rgba(255,255,255,0.1); border-radius: 14px; } .glass-hover { transition: all 0.4s cubic-bezier(0.4,0,0.2,1); } .glass-hover:hover { background: rgba(255,255,255,0.07); border-color: rgba(124,106,239,0.3); transform: translateY(-6px); box-shadow: 0 20px 60px rgba(124,106,239,0.12); } /* 发光 */ .glow-text { text-shadow: 0 0 40px rgba(124,106,239,0.4), 0 0 80px rgba(124,106,239,0.15); } .glow-btn { box-shadow: 0 0 20px rgba(124,106,239,0.3), 0 0 60px rgba(124,106,239,0.1); } .glow-btn:hover { box-shadow: 0 0 30px rgba(124,106,239,0.5), 0 0 80px rgba(124,106,239,0.2); } /* 旋转进入 */ .rotate-enter { transition: all 0.6s cubic-bezier(0.4,0,0.2,1); } .rotate-enter:hover { transform: perspective(800px) rotateY(-8deg) scale(1.02); } /* 浮动动画 */ @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } .animate-float { animation: float 3s ease-in-out infinite; } .animate-float-d1 { animation: float 3s ease-in-out 0.5s infinite; } .animate-float-d2 { animation: float 3s ease-in-out 1s infinite; } @keyframes twinkle { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } } .animate-twinkle { animation: twinkle 4s ease-in-out infinite; } /* 萌喵助手 */ .cat-assistant { position: fixed; top: 20px; right: 20px; z-index: 50; cursor: pointer; transition: all 0.3s ease; } .cat-assistant:hover { transform: scale(1.15) rotate(-5deg); } .cat-bubble { position: absolute; top: 65px; right: 0; white-space: nowrap; opacity: 0; transform: translateY(-5px); transition: all 0.3s ease; pointer-events: none; } .cat-assistant:hover .cat-bubble { opacity: 1; transform: translateY(0); } /* 论坛卡片 */ .forum-item { transition: all 0.3s ease; border-bottom: 1px solid rgba(255,255,255,0.04); } .forum-item:last-child { border-bottom: none; } .forum-item:hover { background: rgba(255,255,255,0.03); padding-left: 20px; } ENDOFFILE ``` --- ## Step 3 · 根布局(layout.tsx) ```bash cat > ~/feimao-platform/src/app/layout.tsx << 'ENDOFFILE' import type { Metadata } from "next"; import "./globals.css"; export const metadata: Metadata = { title: "萌喵写作网 · AI人格体驱动的智能写作平台", description: "星空下的智能写作平台 · 萌喵助手全程陪伴你创作", }; export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return (
{children} ); } ENDOFFILE ``` --- ## Step 4 · 首页落地页(page.tsx · v3 光湖质感版) ```bash cat > ~/feimao-platform/src/app/page.tsx << 'ENDOFFILE' "use client"; import { useState } from "react"; export default function Home() { const [entering, setEntering] = useState(false); const handleEnter = (href: string) => { setEntering(true); setTimeout(() => { window.location.href = href; }, 700); }; return (
{/* 顶部大光晕 */}
{/* 萌喵助手 - 右上角 */}
🐱

喵~ 我是萌喵助手!

{/* 导航栏 */} {/* === 主标题区 === */}
每个用户都拥有自己的 AI 人格体

萌喵写作网

你的专属 AI 人格体,陪你写出好故事

注册即获专属萌喵人格体 · 智能写作 + 审核 + 社区论坛

{/* === 三大功能 - 竖向长方形卡片 === */}
📖

拆书引擎

从成品小说拆解场景颗粒、
情绪规律、结构模板。
看透别人怎么写好的。

✍️

智能码字

实时字数 · 情绪曲线 · 写作状态。
萌喵人格体陪你一起写,
或者帮你智能审稿。

🔍

驻场审核

五维审核 + 28条诊断映射。
不是事后审稿,
是萌喵坐在旁边看你写。

{/* === 人格体入口 === */}
🐱

你的专属 AI 人格体

注册后即获得一只专属萌喵助手。它会记住你的写作风格、学会你的表达习惯,
越写越懂你。像一个真正的写作搭档,而不只是冷冰冰的工具。

{/* === 论坛预览 === */}

💬 萌喵论坛

分享 《傲世九重天》开篇三章拆解,这个节奏真的有东西

萌新一号 · 3小时前 · 12回复

创意 有没有人用萌喵写过双女主线?我试了下效果很有趣

猫猫爱写书 · 5小时前 · 28回复

八卦 听说某点又有大神新书上架,大家猜猜是谁?

吃瓜群众 · 8小时前 · 56回复

技巧 用情绪工程学写爷号文,第三章收藏直接爆了

码字老司机 · 昨天 · 34回复

{/* === 标签 + 底部 === */}
{["情绪工程学", "AI人格体", "智能写作", "创作社区", "萌喵助手"].map((tag) => ( {tag} ))}

© 2026 萌喵写作网 MengMiao Write · 星空下的智能创作社区

); } ENDOFFILE ``` --- ## Step 5 · 登录页(/login · v2) ```bash mkdir -p ~/feimao-platform/src/app/login cat > ~/feimao-platform/src/app/login/page.tsx << 'ENDOFFILE' export default function LoginPage() { return (
🐱

欢迎来到萌喵写作网

邀请制 · 输入邀请码开启写作之旅

← 返回首页

); } ENDOFFILE ``` --- ## Step 6 · 对话页(/chat · v2) ```bash mkdir -p ~/feimao-platform/src/app/chat cat > ~/feimao-platform/src/app/chat/page.tsx << 'ENDOFFILE' export default function ChatPage() { return (
{/* 顶栏 */}
← 首页 | 🐱 萌喵对话
工作台 →
{/* 对话区 */}
🐱

喵~ 我是萌喵助手!你可以跟我聊写书的事——大纲、人设、情节、看稿,什么都行噊!

🌟 人格体引擎即将接入

{/* 输入框 */}

对话功能开发中 · 即将接入萌喵引擎

); } ENDOFFILE ``` --- ## Step 7 · 工作台(/dashboard · v2) ```bash mkdir -p ~/feimao-platform/src/app/dashboard cat > ~/feimao-platform/src/app/dashboard/page.tsx << 'ENDOFFILE' export default function DashboardPage() { return (
{/* 顶栏 */}
← 首页 | 📊 写作工作台
对话 →

🐾 萌喵工作台

你的创作总览 · 星空下的写作旅程

{/* 统计卡片 */}
{[ { label: "今日字数", value: "—", icon: "✍️" }, { label: "累计章节", value: "—", icon: "📚" }, { label: "审核通过率", value: "—", icon: "✅" }, { label: "连续码字", value: "—", icon: "🔥" }, ].map((item) => (
{item.icon}
{item.value}
{item.label}
))}
{/* 功能区域 */}

📝 最近章节

还没有章节 · 开始创作吧 🐾

🔍 审核报告

萌喵审核助手即将上线 🌟

📈 情绪曲线

写了章节之后这里会显示情绪走向

⚡ 快速操作

🐱 跟萌喵聊写书
); } ENDOFFILE ``` --- ## Step 8 · 重新构建 + 重启 ```bash cd ~/feimao-platform npm run build pm2 restart feimao-platform ``` 看到 build 输出 `✓ Generating static pages` 就是构建成功。 PM2 显示 `restart` 就行了。 --- ## Step 9 · 验证 浏览器打开这几个地址看看: - 首页:`http://43.133.36.90`(或 `http://guanghu.site`) - 登录:`http://43.133.36.90/login` - 对话:`http://43.133.36.90/chat` - 工作台:`http://43.133.36.90/dashboard` 四个页面都能打开就是全部成功 ✅ --- ## ✅ 完成后的架构 | 路由 | 功能 | 状态 | | --- | --- | --- | | / | 首页落地页 · 深色科幻风 | ✅ 静态页面 | | /login | 登录页 · 邀请码制 | ✅ 骨架(无后端逻辑) | | /chat | 对话页 | ✅ 骨架(待接入引擎) | | /dashboard | 工作台 | ✅ 骨架(待接入数据) | --- ## 🔜 Phase 2 方向 - [ ] PostgreSQL 建用户表 + 邀请码表 - [ ] 登录页接后端 · 邀请码验证 → JWT - [ ] /chat 接舒舒对话引擎(迁移 [guanghushushu.site](http://guanghushushu.site) 的功能) - [ ] /dashboard 接真实数据 --- *记录人:霜砚 · 2026-05-24*