phase-3-mockup

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Phase 3: Mockup Development

阶段3:Mockup开发

Create trendy UI without a designer + Consider Next.js componentization
无需设计师即可打造潮流UI + 考虑Next.js组件化

Purpose

目的

Quickly validate ideas before actual implementation. Even without a designer, research UI/UX trends to create high-quality prototypes, designed for easy conversion to Next.js components later.
在实际开发前快速验证想法。即便没有设计师,也可通过调研UI/UX趋势创建高质量原型,设计时考虑后续可轻松转换为Next.js组件。

What to Do in This Phase

本阶段需完成的工作

  1. Screen Mockups: Implement UI with HTML/CSS
  2. Interactions: Implement behavior with basic JavaScript
  3. Data Simulation: Simulate API responses with JSON files
  4. Feature Validation: Test user flows
  1. 页面Mockup:用HTML/CSS实现UI
  2. 交互效果:用基础JavaScript实现行为逻辑
  3. 数据模拟:用JSON文件模拟API响应
  4. 功能验证:测试用户流程

Deliverables

可交付成果

mockup/
├── pages/          # HTML pages
│   ├── index.html
│   ├── login.html
│   └── ...
├── styles/         # CSS
│   └── main.css
├── scripts/        # JavaScript
│   └── app.js
└── data/           # JSON mock data
    ├── users.json
    └── products.json

docs/02-design/
└── mockup-spec.md  # Mockup specification
mockup/
├── pages/          # HTML pages
│   ├── index.html
│   ├── login.html
│   └── ...
├── styles/         # CSS
│   └── main.css
├── scripts/        # JavaScript
│   └── app.js
└── data/           # JSON mock data
    ├── users.json
    └── products.json

docs/02-design/
└── mockup-spec.md  # Mockup specification

PDCA Application

PDCA应用

  • Plan: What screens/features to mock up
  • Design: Screen structure, interaction design
  • Do: Implement HTML/CSS/JS
  • Check: Verify feature behavior
  • Act: Apply feedback and proceed to Phase 4
  • Plan:确定需要Mockup的页面/功能
  • Design:页面结构、交互设计
  • Do:实现HTML/CSS/JS
  • Check:验证功能行为
  • Act:采纳反馈并进入阶段4

Level-wise Application

分级别应用

LevelApplication Method
StarterThis stage may be the final deliverable
DynamicFor validation before next stages
EnterpriseFor quick PoC
级别应用方式
入门级本阶段产出可能是最终交付物
动态级用于后续阶段前的验证
企业级用于快速PoC

Core Principles

核心原则

"Working prototype over perfect code"

- Pure HTML/CSS/JS without frameworks
- JSON files instead of APIs for data simulation
- Fast feedback loops
- Structure considering Next.js componentization

"Working prototype over perfect code"

- Pure HTML/CSS/JS without frameworks
- JSON files instead of APIs for data simulation
- Fast feedback loops
- Structure considering Next.js componentization

UI/UX Trend Research Methods

UI/UX趋势调研方法

Creating Trendy UI Without a Designer

无需设计师打造潮流UI

1. Trend Research Sources

1. 趋势调研来源

SourcePurposeURL
DribbbleUI design trends, color palettesdribbble.com
BehanceReal project case studiesbehance.net
AwwwardsLatest web trends from award winnersawwwards.com
MobbinMobile app UI patternsmobbin.com
GodlyLanding page referencesgodly.website
Land-bookLanding page galleryland-book.com
来源用途URL
DribbbleUI设计趋势、配色方案dribbble.com
Behance真实项目案例研究behance.net
Awwwards获奖站点的最新Web趋势awwwards.com
Mobbin移动应用UI模式mobbin.com
Godly落地页参考godly.website
Land-book落地页图库land-book.com

2. 2025-2026 UI/UX Trends

2. 2025-2026 UI/UX趋势

🎨 Visual Trends
├── Bento Grid Layout
├── Glassmorphism
├── Gradient Mesh
├── 3D Elements (minimal 3D elements)
└── Micro-interactions

📱 UX Trends
├── Dark Mode First
├── Skeleton Loading
├── Progressive Disclosure
├── Thumb-friendly Mobile Design
└── Accessibility (WCAG 2.1)

🔤 Typography
├── Variable Fonts
├── Large Hero Text
└── Mixed Font Weights
🎨 Visual Trends
├── Bento Grid Layout
├── Glassmorphism
├── Gradient Mesh
├── 3D Elements (minimal 3D elements)
└── Micro-interactions

📱 UX Trends
├── Dark Mode First
├── Skeleton Loading
├── Progressive Disclosure
├── Thumb-friendly Mobile Design
└── Accessibility (WCAG 2.1)

🔤 Typography
├── Variable Fonts
├── Large Hero Text
└── Mixed Font Weights

3. Quick UI Implementation Tools

3. 快速UI实现工具

ToolPurpose
v0.devAI-based UI generation (shadcn/ui compatible)
Tailwind UIHigh-quality component templates
HeroiconsIcons
LucideIcons (React compatible)
CoolorsColor palette generation
Realtime ColorsReal-time color preview
工具用途
v0.dev基于AI的UI生成(兼容shadcn/ui)
Tailwind UI高质量组件模板
Heroicons图标库
Lucide图标库(兼容React)
Coolors配色方案生成
Realtime Colors实时配色预览

4. Pre-Mockup Checklist

4. Mockup前检查清单

markdown
undefined
markdown
undefined

UI Research Checklist

UI Research Checklist

  • Analyzed 3+ similar services
  • Decided color palette (Primary, Secondary, Accent)
  • Selected typography (Heading, Body)
  • Chose layout pattern (Grid, Bento, etc.)
  • Collected reference design screenshots

---
  • Analyzed 3+ similar services
  • Decided color palette (Primary, Secondary, Accent)
  • Selected typography (Heading, Body)
  • Chose layout pattern (Grid, Bento, etc.)
  • Collected reference design screenshots

---

Design for Next.js Componentization

面向Next.js组件化的设计

Mockup → Component Transition Strategy

Mockup → 组件迁移策略

Considering component separation from the mockup stage makes Next.js transition easier.
从Mockup阶段就考虑组件拆分可以让Next.js迁移更顺畅。

1. Design HTML Structure in Component Units

1. 按组件单元设计HTML结构

html
<!-- ❌ Bad: Monolithic HTML -->
<div class="page">
  <header>...</header>
  <main>
    <div class="hero">...</div>
    <div class="features">...</div>
  </main>
  <footer>...</footer>
</div>

<!-- ✅ Good: Separated by component units -->
<!-- components/Header.html -->
<header data-component="Header">
  <nav data-component="Navigation">...</nav>
</header>

<!-- components/Hero.html -->
<section data-component="Hero">
  <h1 data-slot="title">...</h1>
  <p data-slot="description">...</p>
  <button data-component="Button" data-variant="primary">...</button>
</section>
html
<!-- ❌ Bad: Monolithic HTML -->
<div class="page">
  <header>...</header>
  <main>
    <div class="hero">...</div>
    <div class="features">...</div>
  </main>
  <footer>...</footer>
</div>

<!-- ✅ Good: Separated by component units -->
<!-- components/Header.html -->
<header data-component="Header">
  <nav data-component="Navigation">...</nav>
</header>

<!-- components/Hero.html -->
<section data-component="Hero">
  <h1 data-slot="title">...</h1>
  <p data-slot="description">...</p>
  <button data-component="Button" data-variant="primary">...</button>
</section>

2. Separate CSS by Component

2. 按组件拆分CSS

mockup/
├── styles/
│   ├── base/
│   │   ├── reset.css
│   │   └── variables.css      # CSS variables (design tokens)
│   ├── components/
│   │   ├── button.css
│   │   ├── card.css
│   │   ├── header.css
│   │   └── hero.css
│   └── pages/
│       └── home.css
mockup/
├── styles/
│   ├── base/
│   │   ├── reset.css
│   │   └── variables.css      # CSS variables (design tokens)
│   ├── components/
│   │   ├── button.css
│   │   ├── card.css
│   │   ├── header.css
│   │   └── hero.css
│   └── pages/
│       └── home.css

3. Create Component Mapping Document

3. 创建组件映射文档

markdown
undefined
markdown
undefined

Component Mapping (mockup → Next.js)

Component Mapping (mockup → Next.js)

Mockup FileNext.js ComponentProps
components/button.html
components/ui/Button.tsx
variant, size, disabled
components/card.html
components/ui/Card.tsx
title, description, image
components/header.html
components/layout/Header.tsx
user, navigation
undefined
Mockup FileNext.js ComponentProps
components/button.html
components/ui/Button.tsx
variant, size, disabled
components/card.html
components/ui/Card.tsx
title, description, image
components/header.html
components/layout/Header.tsx
user, navigation
undefined

4. Design Data Structure as Props

4. 将数据结构设计为Props

javascript
// mockup/data/hero.json
{
  "title": "Innovative Service",
  "description": "We provide better experiences",
  "cta": {
    "label": "Get Started",
    "href": "/signup"
  },
  "image": "/hero-image.png"
}

// → When transitioning to Next.js
// components/Hero.tsx
interface HeroProps {
  title: string;
  description: string;
  cta: {
    label: string;
    href: string;
  };
  image: string;
}
javascript
// mockup/data/hero.json
{
  "title": "Innovative Service",
  "description": "We provide better experiences",
  "cta": {
    "label": "Get Started",
    "href": "/signup"
  },
  "image": "/hero-image.png"
}

// → When transitioning to Next.js
// components/Hero.tsx
interface HeroProps {
  title: string;
  description: string;
  cta: {
    label: string;
    href: string;
  };
  image: string;
}

Next.js Transition Example

Next.js迁移示例

Mockup (HTML):
html
<!-- mockup/components/feature-card.html -->
<div class="feature-card" data-component="FeatureCard">
  <div class="feature-card__icon">🚀</div>
  <h3 class="feature-card__title">Fast Speed</h3>
  <p class="feature-card__description">We provide optimized performance.</p>
</div>
Next.js Component:
tsx
// components/FeatureCard.tsx
interface FeatureCardProps {
  icon: string;
  title: string;
  description: string;
}

export function FeatureCard({ icon, title, description }: FeatureCardProps) {
  return (
    <div className="feature-card">
      <div className="feature-card__icon">{icon}</div>
      <h3 className="feature-card__title">{title}</h3>
      <p className="feature-card__description">{description}</p>
    </div>
  );
}

Mockup(HTML):
html
<!-- mockup/components/feature-card.html -->
<div class="feature-card" data-component="FeatureCard">
  <div class="feature-card__icon">🚀</div>
  <h3 class="feature-card__title">Fast Speed</h3>
  <p class="feature-card__description">We provide optimized performance.</p>
</div>
Next.js组件:
tsx
// components/FeatureCard.tsx
interface FeatureCardProps {
  icon: string;
  title: string;
  description: string;
}

export function FeatureCard({ icon, title, description }: FeatureCardProps) {
  return (
    <div className="feature-card">
      <div className="feature-card__icon">{icon}</div>
      <h3 className="feature-card__title">{title}</h3>
      <p className="feature-card__description">{description}</p>
    </div>
  );
}

JSON Data Simulation Example

JSON数据模拟示例

javascript
// scripts/app.js
async function loadProducts() {
  const response = await fetch('./data/products.json');
  const products = await response.json();
  renderProducts(products);
}
javascript
// scripts/app.js
async function loadProducts() {
  const response = await fetch('./data/products.json');
  const products = await response.json();
  renderProducts(products);
}

JSON Structure → Use as API Schema

JSON结构 → 用作API Schema

json
// mockup/data/products.json
// This structure becomes the basis for Phase 4 API design
{
  "data": [
    {
      "id": 1,
      "name": "Product Name",
      "price": 10000,
      "image": "/products/1.jpg"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 50
  }
}

json
// mockup/data/products.json
// This structure becomes the basis for Phase 4 API design
{
  "data": [
    {
      "id": 1,
      "name": "Product Name",
      "price": 10000,
      "image": "/products/1.jpg"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 50
  }
}

Deliverables Checklist

交付物检查清单

  • UI Research
    • Collected reference designs (minimum 3)
    • Decided color palette
    • Selected fonts
  • Mockup Implementation
    • HTML separated by component units
    • Design tokens defined with CSS variables
    • Data simulated with JSON
  • Next.js Transition Preparation
    • Component mapping document created
    • Props interfaces defined
    • Verified reusable structure

  • UI调研
    • 收集参考设计(至少3份)
    • 确定配色方案
    • 选定字体
  • Mockup实现
    • 按组件单元拆分HTML
    • 用CSS变量定义设计令牌
    • 用JSON模拟数据
  • Next.js迁移准备
    • 完成组件映射文档
    • 定义Props接口
    • 验证可复用结构

Template

模板

See
templates/pipeline/phase-3-mockup.template.md
参见
templates/pipeline/phase-3-mockup.template.md

Next Phase

下一阶段

Phase 4: API Design/Implementation → Mockup is validated, now implement actual backend
阶段4:API设计/实现 → Mockup已验证,现在实现实际后端