Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ html2web Public

HTML2WEB - 粘贴代码,分享创意!一个支持 HTML 和 Markdown 在线编辑、预览和分享的现代化平台

Notifications You must be signed in to change notification settings

h7ml/html2web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

1 Commit

Repository files navigation

HTML2WEB - 粘贴代码,分享创意!


✨ 核心特性

  • 🎨 Monaco Editor - 专业的代码编辑器,支持语法高亮和智能提示
  • 📝 双模式支持 - HTML 和 Markdown 两种编辑模式自由切换
  • 👁️ 实时预览 - 所见即所得的编辑体验
  • 🔗 一键分享 - 生成永久分享链接,轻松分享你的创意
  • 🔐 管理系统 - 完善的后台管理,支持文件增删改查
  • 🌓 主题切换 - 支持亮色/暗色主题
  • 📱 响应式设计 - 完美适配各种设备屏幕
  • 实时通信 - Socket.IO 支持,未来可扩展协作功能
  • 🗄️ 数据持久化 - Prisma + SQLite 数据库存储

🚀 快速开始

前置要求

  • Node.js 18+
  • npm/pnpm

安装步骤

# 克隆项目
git clone git@github.com:h7ml/html2web.git
cd html2web
# 安装依赖
npm install
# 配置环境变量(可选,使用默认配置即可)
cp .env.example .env
# 初始化数据库和管理员账号
npm run db:setup
# 启动开发服务器
npm run dev

打开浏览器访问 http://localhost:3000

默认管理员账号

📦 技术栈

本项目由以下现代化技术驱动:

核心框架

UI 组件库

  • shadcn/ui - 高质量、可定制的 React 组件集合(基于 Radix UI)
  • @monaco-editor/react - VS Code 同款代码编辑器,支持语法高亮和智能提示
  • Lucide React - 简洁美观的开源图标库(600+ 图标)
  • Framer Motion - 流畅的动画和手势库
  • Sonner - 优雅的 Toast 通知组件

数据库与 ORM

  • Prisma 6.16.3 - 类型安全的现代化 ORM
  • SQLite - 轻量级嵌入式数据库(支持切换到 PostgreSQL/MySQL)

实时通信

  • Socket.IO 4.8.1 - 可靠的实时双向事件通信库(支持 WebSocket、长轮询等传输方式)

表单与验证

Markdown 处理

认证与安全

工具库

开发工具

  • ESLint 9 - JavaScript/TypeScript 代码检查
  • Nodemon - 开发环境自动重启
  • tsx - TypeScript 脚本执行器

部署平台

  • Vercel - Next.js 官方推荐的无服务器部署平台(本项目已部署)

📁 项目结构

html2web/
├── prisma/
│ └── schema.prisma # 数据库模型定义
├── scripts/
│ └── init-admin.ts # 管理员初始化脚本
├── src/
│ ├── app/
│ │ ├── admin/ # 管理后台页面
│ │ ├── api/ # API 路由
│ │ │ ├── admin/ # 管理员认证
│ │ │ ├── files/ # 文件管理
│ │ │ ├── markdown/ # Markdown 处理
│ │ │ └── share/ # 分享功能
│ │ ├── preview/ # 预览页面
│ │ └── page.tsx # 主页
│ ├── components/
│ │ ├── ui/ # shadcn/ui 组件
│ │ └── MonacoEditor.tsx # Monaco 编辑器封装
│ └── lib/
│ ├── db.ts # Prisma 客户端
│ ├── socket.js # Socket.IO 配置
│ └── utils.ts # 工具函数
├── server.js # 自定义服务器(集成 Socket.IO)
├── .env # 环境变量配置
└── package.json # 依赖配置

🎯 主要功能

1. 代码编辑

  • Monaco Editor 提供专业的编辑体验
  • 支持语法高亮、代码补全、快捷键等
  • HTML 和 Markdown 双模式

2. 实时预览

  • 所见即所得的预览
  • 支持 HTML 直接渲染
  • Markdown 自动转换为 HTML(支持 GitHub Flavored Markdown)

3. 文件管理

  • 创建、编辑、删除文件
  • 公开/私密设置
  • 文件列表查看
  • 管理员权限控制

4. 分享系统

  • 生成唯一的分享链接
  • 永久访问,无需登录
  • 支持复制分享链接

5. 管理后台

  • JWT 身份验证
  • 文件列表管理
  • 密码修改
  • 操作日志

🛠️ 可用脚本

# 开发
npm run dev # 启动开发服务器(带 hot reload)
# 构建
npm run build # 构建生产版本
npm start # 启动生产服务器
# 数据库
npm run db:setup # 一键初始化(生成 Client + 推送 Schema + 创建管理员)
npm run db:push # 推送 Schema 到数据库
npm run db:generate # 生成 Prisma Client
npm run db:migrate # 创建迁移文件
npm run db:reset # 重置数据库
# 代码质量
npm run lint # ESLint 检查

🔐 环境变量

创建 .env 文件:

# 数据库连接(SQLite 默认)
DATABASE_URL="file:./dev.db"
# JWT 密钥(生产环境务必更换)
JWT_SECRET="your-super-secret-key-change-in-production"

📝 API 文档

访问 https://html2web.h7ml.cn/api-docs 查看完整的 API 文档。

主要 API 端点

端点 方法 描述
/api/admin/auth POST / GET 登录 / 验证
/api/admin/password POST 修改密码
/api/files GET / POST 文件列表 / 创建
/api/files/[id] GET / PUT / DELETE 文件详情 / 更新 / 删除
/api/markdown POST Markdown 转 HTML
/api/share POST / GET 创建 / 获取分享
/api/health GET 健康检查

🌐 部署

Vercel(已部署 - 推荐)

本项目已部署至 Vercel,访问地址:https://html2web.h7ml.cn

自行部署到 Vercel

# 方式 1: 使用 Vercel CLI
npm i -g vercel
vercel --prod
# 方式 2: 通过 GitHub 自动部署
# 1. Fork 本仓库
# 2. 访问 https://vercel.com/new 导入项目
# 3. 选择 vercel-deploy 分支
# 4. 配置环境变量后部署

必需环境变量:

  • DATABASE_URL - 数据库连接字符串(推荐 Vercel Postgres 或 Neon)
  • JWT_SECRET - JWT 密钥(至少 32 字符)

⚠️ 注意事项:

  • Vercel 不支持自定义 Node.js 服务器
  • Socket.IO 功能需使用 Vercel Serverless Functions 改造
  • 建议使用 Vercel Postgres 或外部 PostgreSQL 数据库

Cloudflare Pages(备用方案 - 免费且快速)

前置条件

  • Cloudflare 账号
  • GitHub 账号(用于自动部署)
  • 外部数据库(推荐 Neon PostgreSQL 或 PlanetScale MySQL)

部署步骤

  1. 准备外部数据库
# 使用 Neon(推荐 - PostgreSQL)
# 1. 访问 https://neon.tech 创建免费数据库
# 2. 获取连接字符串,如:postgresql://user:pass@host/db?sslmode=require
# 或使用 PlanetScale(MySQL)
# 1. 访问 https://planetscale.com 创建免费数据库
# 2. 获取连接字符串
  1. 更新 Prisma Schema
// prisma/schema.prisma
datasource db {
 provider = "postgresql" // 或 "mysql"
 url = env("DATABASE_URL")
}
  1. 在 Cloudflare Dashboard 部署
  • 登录 Cloudflare Dashboard
  • 进入 Workers & Pages > Create Application > Pages > Connect to Git
  • 选择 h7ml/html2web 仓库
  • 配置构建设置:
    • Framework preset: Next.js
    • Build command: npm run build
    • Build output directory: .next
    • Root directory: /
  • 添加环境变量:
    • DATABASE_URL: 你的数据库连接字符串
    • JWT_SECRET: 生产环境密钥(至少 32 字符)
    • CF_PAGES: true(启用 Cloudflare 优化)
  • 点击 Save and Deploy
  1. 初始化数据库
# 本地执行(使用生产数据库 URL)
DATABASE_URL="你的数据库URL" npm run db:push
DATABASE_URL="你的数据库URL" npx tsx scripts/init-admin.ts

注意事项

⚠️ Cloudflare 限制:

  • 不支持 Socket.IO:实时通信功能在 Cloudflare 上不可用(可用 Cloudflare Durable Objects 替代,需额外开发)
  • 函数执行时间限制:免费版最多 100ms CPU 时间
  • 冷启动:首次请求可能较慢

优化建议:

  • 使用 Cloudflare Images 处理图片
  • 启用 Cloudflare R2 存储大文件
  • 使用 Cloudflare D1(SQLite)作为数据库(需调整代码)

Vercel(简单快速)

# 安装 Vercel CLI
npm i -g vercel
# 部署
vercel
# 配置环境变量(在 Vercel Dashboard)
# - DATABASE_URL
# - JWT_SECRET

Docker

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
RUN npm run db:setup
EXPOSE 3000
CMD ["npm", "start"]

传统服务器

# 构建
npm run build
# 配置环境变量
export NODE_ENV=production
export DATABASE_URL="file:./prod.db"
export JWT_SECRET="your-production-secret"
# 初始化数据库
npm run db:push
npx tsx scripts/init-admin.ts
# 启动
npm start

🤝 贡献

欢迎贡献代码!请查看 CONTRIBUTING.md 了解详情。

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

📮 联系方式


⭐ 如果这个项目对你有帮助,请给一个 Star!

Made with ❤️ by h7ml

About

HTML2WEB - 粘贴代码,分享创意!一个支持 HTML 和 Markdown 在线编辑、预览和分享的现代化平台

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /