# zitie **Repository Path**: ns2250225/zitie ## Basic Information - **Project Name**: zitie - **Description**: 自定义字帖生成网站 - **Primary Language**: TypeScript - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-06 - **Last Updated**: 2026-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CalliSheet 字帖工坊 CalliSheet 是一个完全运行在浏览器中的中文书法字帖生成工具。无需注册或服务端,输入文字后即可生成适合打印的田字格、米字格等字帖,并导出 PNG 或多页 PDF。 ## 主要功能 - 自由输入中文、繁体中文及常用 CJK 文字 - 内置古诗、佛经与启蒙经典示例 - 五款本地书法字体,字体资源无需访问境外服务 - 支持上传 TTF、OTF、WOFF 和 WOFF2 字体 - 田字格、米字格、九宫格、方格、横线和空白模板 - 描红、对照、临摹及空白练习模式 - A4 纵向横排与横向右起竖排 - 宣纸、素白、护眼绿和仿古纸张 - 自动分页、打印、高清 PNG 和多页 PDF 导出 - PWA 离线缓存,所有文字只在本机处理 ## 技术栈 - React 19 - TypeScript - Vite - jsPDF、html2canvas、html-to-image - Fontsource 本地字体资源 - Service Worker - Docker + Nginx ## 本地开发 环境要求:Node.js 22.13 或更高版本。项目使用 pnpm 11,低版本 Node.js 不包含其所需的 `node:sqlite` 模块。 ```bash npm install --registry=https://registry.npmmirror.com npm run dev ``` 浏览器访问 Vite 输出的地址,默认通常为: ```text http://localhost:5173 ``` ## 生产构建 ```bash npm run build ``` 构建产物位于 `dist/` 目录。可以使用以下命令本地预览: ```bash npm run preview ``` ## Docker 部署 ### 使用 Docker Compose ```bash docker compose up -d --build ``` 部署完成后访问: ```text http://localhost:8080 ``` 停止服务: ```bash docker compose down ``` ### 使用一键脚本 ```bash ./docker-deploy.sh ``` 可以通过环境变量修改镜像名、容器名和端口: ```bash IMAGE_NAME=callisheet:v1 CONTAINER_NAME=callisheet-web PORT=9000 ./docker-deploy.sh ``` ### 手动构建 ```bash docker build -t callisheet:latest . docker run -d --name callisheet -p 8080:80 --restart unless-stopped callisheet:latest ``` Docker 构建阶段使用 `https://registry.npmmirror.com` 下载 npm/pnpm 依赖。最终镜像仅包含 Nginx 和静态资源,不包含 Node.js 开发环境。 ## 项目结构 ```text . ├── public/ # PWA 清单与 Service Worker ├── src/ │ ├── App.tsx # 字帖编辑、预览和导出逻辑 │ ├── main.tsx # 应用入口与本地字体 │ └── styles.css # 界面、字格及打印样式 ├── Dockerfile ├── docker-compose.yml ├── docker-deploy.sh ├── nginx.conf └── package.json ``` ## 字体说明 内置字体来自开源 Fontsource 字体包。为支持更完整的中文字符,项目会构建 Unicode 字体分片;首次访问某些生僻字时,浏览器会按需加载对应的本地分片并缓存。 用户上传的字体仅存在于当前浏览器会话,不会上传到服务器。字体的使用与再分发应遵守其原始授权协议。 ## 隐私 - 输入内容不会上传 - PDF 和图片均在浏览器中生成 - 无账号、数据库和分析脚本 - 离线缓存只保存在用户设备中 ## 浏览器支持 建议使用最新版本的 Chrome、Edge 或 Safari。PDF 导出涉及 Canvas 和字体渲染,处理大量页面时请保持页面处于前台并耐心等待。