Next.jsReactHTML工具站

SigFlow — Next.js 工具站模板

作者 o-sharaf5

SigFlow 是一个纯客户端运行的 HTML 邮件签名生成器,通过分屏编辑器为 Gmail、Outlook 和 Apple Mail 生成可直接粘贴的签名 HTML。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

2 个预览视图
桌面端首页1 / 2
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 2

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-12查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

左右分屏编辑器,表单修改后签名实时刷新

02

内置 4 套签名模板,输出为内联样式与嵌套 table 布局

03

用户文本在插入前做 HTML 转义,预览使用 dangerouslySetInnerHTML 时不会执行注入标记

04

复制同时写入富文本 text/html 与纯文本,并给出 Gmail、Outlook、Apple Mail 的粘贴说明

05

草稿通过 localStorage 防抖保存,支持深色模式切换

06

可静态预渲染,无 API 路由与后端依赖

模板详细介绍

SigFlow 是一个在浏览器中运行的 HTML 邮件签名生成工具,面向需要为 Gmail、Outlook 和 Apple Mail 配置签名的用户。页面采用左右分屏布局:左侧表单按 Info、Media、Social、Style 分组填写姓名、联系方式、图片和社交链接,右侧实时预览签名效果,并提供 HTML 代码标签页与复制按钮。

生成逻辑由纯函数 generateSignatureHtml(data) 完成,内置 4 套模板。为兼容邮件客户端,输出仅使用内联样式、嵌套 table 布局,并为图片写入宽高属性;用户输入的文本在插入前会做 HTML 转义,避免预览区执行注入的标记。复制功能同时提供富文本 text/html 与纯文本两种剪贴板写入方式,并附有各客户端的粘贴说明。

项目基于 Next.js App Router 构建,使用 TypeScript、Tailwind CSS 与 shadcn/ui 组件,草稿通过 localStorage 做防抖持久化,主题切换由 next-themes 提供。整个应用可静态预渲染,没有 API 路由,也不需要后端;README 提到可选的 Supabase 方案用于保存命名模板,但当前仓库未包含该实现。

Next.jsReactHTML工具站

适合你的项目吗?

适用场景

  • 为 Gmail 账号生成带姓名、职位和社交链接的邮件签名
  • 为 Outlook 配置使用 table 布局、兼容 Word 渲染引擎的签名 HTML
  • 为 Apple Mail 准备可直接粘贴的富文本签名
  • 在本地浏览器中反复调整签名样式并实时查看效果

适合人群

  • 需要为多个邮件客户端生成签名的个人用户
  • 希望参考纯前端签名生成实现方式的开发者
  • 需要一个无后端、可静态部署的 Next.js 示例项目的人

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    运行 npm install 安装依赖,npm run dev 启动本地开发服务器

  2. 2

    剪贴板 API 需要安全上下文,localhost 视为安全,生产环境需 HTTPS

  3. 3

    npm run build 会静态预渲染首页,不生成 API 路由

  4. 4

    README 中提到的 Supabase 保存模板属于可选扩展,仓库当前未实现

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • README 将许可描述为“portfolio use”(作品集用途),暗示该项目定位为个人作品集展示,而非面向生产环境的通用工具;使用者应知悉其作品集性质。
  • 保存命名模板需自行接入 Supabase(或 Clerk/Supabase Auth)等外部服务并创建 templates 表,当前仓库未包含该实现,属于可选扩展而非开箱功能。
  • 复制功能依赖 Clipboard API,必须在安全上下文(HTTPS 或 localhost)下运行,非安全上下文无法使用复制。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

MIT — portfolio use.

README 原文

Optional next step: Supabase

README 原文

The Clipboard API requires a **secure context**.

README 原文
https://github.com/o-sharaf5/SigFlow/blob/main/LICENSEhttps://github.com/o-sharaf5/SigFlow/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-12。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 85 / 100
技术栈
Next.js · React · HTML
网站类型
工具站
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-10-12
截图检查日期
2026-10-12

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-13

查看当时使用的来源资料

SHA-256: c1bfabdd691008c5c4a0dfc7c1510016b9e332d94cdeeb34877dee4819d05a9f

2026-10-12T13:41:03.231Z

来源文件 / 仓库
# SigFlow — HTML Email Signature Generator

A lightweight, fully client-side SaaS-style tool: a live split-screen editor that
generates **paste-safe HTML email signatures** for Gmail, Outlook and Apple Mail.
Built as a portfolio project.

**Live demo: https://sigflow-henna.vercel.app**

**Stack:** Next.js 16 (App Router) · TypeScript · Tailwind CSS v4 · shadcn/ui
(Base UI primitives) · Lucide React · next-themes · localStorage drafts.
No backend required — the whole app prerenders as static HTML, so Vercel deploys
are instant and free-tier friendly.

## Quick start

```bash
npm install
npm run dev        # http://localhost:3000
npm run build      # static prerender of / — zero API routes
```

> The Clipboard API requires a **secure context**. `localhost` counts as secure,
> so copy works in dev; production on Vercel is HTTPS automatically.

## Folder structure

```
sigflow/
├── src/
│   ├── app/
│   │   ├── layout.tsx              # Root layout: fonts, metadata, ThemeProvider
│   │   ├── page.tsx                # Split-screen editor (client component)
│   │   └── globals.css             # Tailwind v4 + shadcn theme tokens (.dark)
│   ├── components/
│   │   ├── signature-form.tsx      # Left panel: Info / Media / Social / Style tabs
│   │   ├── signature-preview.tsx   # Right panel: live preview + HTML tab + copy buttons
│   │   ├── site-header.tsx         # Logo, Reset, dark-mode toggle
│   │   ├── theme-provider.tsx      # next-themes wrapper (SSR-safe)
│   │   └── ui/                     # shadcn primitives (button, tabs, select, slider…)
│   └── lib/
│       ├── signature-types.ts      # Data model, defaults, social provider metadata
│       ├── signature-generator.ts  # ★ Pure HTML-string generator (4 templates)
│       ├── clipboard.ts            # ★ Rich-text + plain-text clipboard APIs
│       ├── use-local-draft.ts      # Debounced localStorage persistence hook
│       ├── use-hydrated.ts         # useSyncExternalStore-based hydration gate
│       └── utils.ts                # cn() helper
├── next.config.ts
└── package.json
```

## Architecture in one paragraph

State lives in one `SignatureData` object (`useLocalDraft`). The form mutates it
immutably; the preview calls the **pure** `generateSignatureHtml(data)` inside a
`useMemo`, so every keystroke re-renders the signature for free. The generator
enforces the three rules of email-client survival: inline styles only, nested
`<table>` layout (Outlook's Word engine ignores flex/grid), and width/height
attributes on images. User text is HTML-escaped before insertion, so the
`dangerouslySetInnerHTML` preview can never execute injected markup.

## Optional next step: Supabase

To save named templates per user, add a `templates` table
(`id, user_id, name, data jsonb, created_at`) and reuse `SignatureData` as the
`jsonb` shape verbatim — the model is already serializable. Clerk or Supabase
Auth both fit; the app needs no schema changes until then.

## 2-day build & deploy plan (how this repo was made)

### Day 1 — Core editor
- **Morning:** scaffold `create-next-app` (TS + Tailwind + App Router), `shadcn init`,
  add primitives. Define `SignatureData` + defaults.
- **Afternoon:** write `signature-generator.ts` first (pure functions are testable
  without a UI), then the form tabs, then the preview panel.
- **Evening:** localStorage draft hook, dark mode, responsive grid, XSS-escaping
  pass.

### Day 2 — Polish & ship
- **Morning:** clipboard (rich `text/html` + fallback), HTML code tab with
  highlighting, per-client paste instructions.
- **Afternoon:** a11y (labels, focus rings, keyboard nav), favicon/OG metadata,
  `npm run build` clean.
- **Evening:** push to GitHub → import in Vercel → deploy (framework preset
  auto-detected; no env vars needed). Verify clipboard on the HTTPS domain.

### Stretch (Day 3+)
Supabase auth + saved templates, signature QR code, .eml download, analytics.

## License

MIT — portfolio use.
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。