Skip to content

Repository files navigation

WebToolsAPP

一个基于 Next.js 16 App Router 构建的 WebTools 集合框架。

视觉展示

亮色海报

WebToolsAPP 亮色展示海报

暗色海报

WebToolsAPP 暗色展示海报

项目目标不是只做几个固定工具,而是提供一套可持续扩展的工具站基础设施:统一的工具注册机制、分类体系、页面布局、SEO、国际化、主题切换,以及本地收藏 / 历史记录能力。你可以把它作为一个网页工具站的起点,在此基础上持续添加新的工具模块。

项目定位

  • 面向浏览器内即用的在线工具集合
  • 工具逻辑与框架解耦,便于持续新增工具
  • 支持中英文双语路由
  • 支持工具级 SEO 元数据、Sitemap、robots、JSON-LD
  • 支持亮色 / 暗色主题切换
  • 基于 Zustand 本地持久化收藏夹与浏览记录
  • 无账号系统、无数据库、无后端业务依赖

当前能力

当前仓库已经内置的能力包括:

  • 工具首页、分类浏览、搜索
  • 工具详情页统一布局
  • 收藏页与历史记录页
  • 工具注册表 src/tools/registry.ts
  • 分类定义 src/tools/categories.ts
  • 工具 UI 组件库 src/components/tool-ui/
  • 国际化资源 src/i18n/
  • SEO 公共能力 src/lib/seo.ts

当前示例工具包括:

  • Base64 编解码
  • JSON 格式化
  • JSON / TOML 转换
  • 罗马数字转换
  • 字符串格式转换

技术栈

  • Next.js 16.2.4
  • React 19
  • TypeScript 5
  • Tailwind CSS 4
  • shadcn/ui
  • next-intl
  • Zustand
  • Monaco Editor(按需加载)

目录概览

src/
├── app/                 # App Router 路由与页面
├── components/          # 布局、共享组件、tool-ui 组件库
├── tools/               # 每个工具的 meta/core/ui 实现
├── i18n/                # 语言配置与翻译资源
├── lib/                 # SEO 与通用工具函数
├── store/               # 收藏夹、历史记录的 Zustand store
└── types/               # Tool / Category 等核心类型

完整说明见:

本地开发

环境要求

  • Node.js 20.9+
  • npm 10+

安装依赖

npm install

启动开发环境

npm run dev

默认访问:

  • http://localhost:3000

根路径会自动重定向到默认语言路由:

  • /zh

代码检查

npm run lint

构建与部署

生产构建

npm run build

启动生产服务

npm run start

这是一个标准的 Next.js 16 应用。按 Next.js 官方文档,最小可运行部署形态就是一个 Node.js 服务进程,因此最直接的部署方式有两类:

  1. 部署到 Vercel 一类的托管平台
  2. 自托管 Node.js 服务,使用 next build + next start

如果你需要正确生成 canonical、Open Graph URL、sitemap 等 SEO 地址,请在部署环境中设置:

NEXT_PUBLIC_SITE_URL=https://your-domain.com

仓库当前的 SEO URL 构造逻辑位于:

常见部署流程

npm install
npm run build
npm run start

如果通过反向代理对外提供服务,只需要把外部域名与 NEXT_PUBLIC_SITE_URL 保持一致。

如何添加一个新工具

这个项目的扩展核心在 src/tools/。每个工具通常由三个文件组成:

src/tools/your-tool/
├── meta.ts     # 工具元数据
├── core.ts     # 纯业务逻辑
└── index.tsx   # 工具 UI

接入一个新工具的基本流程:

  1. 确认目标分类存在,不存在就先添加分类
  2. src/tools/<tool-id>/ 下创建工具目录
  3. 编写 meta.tscore.tsindex.tsx
  4. src/tools/registry.ts 中注册工具
  5. src/components/shared/ToolClientLoader.tsx 中接入动态加载
  6. 为中英文分别添加翻译文件
  7. 为工具补齐描述、富文本与 SEO 信息

详细步骤直接看:

SEO 设计

这个框架不是把 SEO 当成附加项,而是把它作为工具站的基础设施来设计。

当前实现包括:

  • 每个工具页通过 generateMetadata 生成独立标题与描述
  • 自动生成 sitemap.xml
  • 自动生成 robots.txt
  • canonical 与 hreflang 语言映射
  • JSON-LD 结构化数据
  • 工具页采用 SSR Shell + CSR Tool 模式,保证爬虫能看到页面主内容与富文本

关键入口:

国际化(i18n)

项目使用 next-intl,通过语言前缀路由区分不同语言版本:

  • /zh/...
  • /en/...

当前约定:

  • 框架通用文案放在 src/i18n/locales/*/common.json
  • 每个工具拥有独立的 tools/<tool-id>.json
  • 默认语言由 src/i18n/config.ts 管理
  • 路由中间件负责处理语言匹配与跳转

相关入口:

状态管理

项目当前不依赖后端存储,用户相关状态完全保存在浏览器本地:

  • 收藏夹
  • 浏览记录

实现基于 Zustand 持久化中间件,相关说明见:

适合什么场景

这个仓库适合:

  • 想快速搭建一个工具导航 + 工具详情站点
  • 想持续维护多个独立网页工具,但不希望每次都重复搭建外层框架
  • 需要多语言与 SEO 收录能力的工具站
  • 希望先以纯前端工具为主,避免引入数据库和账号体系

当前不包含:

  • 用户系统
  • 数据库
  • 工具插件市场
  • 服务端执行型工具引擎

文档导航

核心文档

扩展与开发指南

开源协议

本项目采用 MIT License,详细条款请见仓库根目录的 LICENSE 文件。

推荐阅读顺序

  1. 先看 项目概述,了解框架目标与边界
  2. 再看 架构设计,理解工具注册与页面结构
  3. 然后看 添加一个工具,开始扩展第一个工具
  4. 需要多语言时继续看 国际化指南
  5. 需要搜索流量时重点看 SEO 优化指南

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages