diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..d288680 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,12 @@ +{ + "permissions": { + "allow": [ + "Read(./.env.example)" + ], + "deny": [ + "Read(./.env)", + "Read(./.env.development)", + "Read(./.env.production)" + ] + } +} \ No newline at end of file diff --git a/.clineignore b/.clineignore deleted file mode 100644 index dbf0606..0000000 --- a/.clineignore +++ /dev/null @@ -1,53 +0,0 @@ -# 这里的文件会被Cline忽略,一般从 .gitignore 直接复制就行,一些需要保密不便给大模型看的文件也可以写在这 - -# dependencies -/node_modules -/.pnp -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/versions - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# env files (can opt-in for committing if needed) -.env* -!.env*.example - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts - -/postgresql -tasks.md -/prisma/zod - -# pnpm -.pnpm-store/ - -# lock 一般的项目需要用git管理,但这个是模板项目就不管理 -package-lock.json -pnpm-lock.yaml diff --git a/.cloud-dev/Dockerfile b/.cloud-dev/Dockerfile index 2616d56..288edf1 100644 --- a/.cloud-dev/Dockerfile +++ b/.cloud-dev/Dockerfile @@ -44,6 +44,7 @@ RUN apt-get update && apt-get install -y \ cmake \ telnet \ redis-tools \ + iputils-ping \ potrace \ imagemagick \ zsh \ @@ -108,7 +109,6 @@ RUN mkdir -p /var/run/sshd && \ RUN code-server --install-extension ms-ceintl.vscode-language-pack-zh-hans \ && code-server --install-extension bierner.markdown-mermaid \ && code-server --install-extension ms-python.python \ - && code-server --install-extension saoudrizwan.claude-dev \ && code-server --install-extension dbaeumer.vscode-eslint \ && code-server --install-extension prisma.prisma \ && code-server --install-extension ecmel.vscode-html-css \ diff --git a/.cloud-dev/README.md b/.cloud-dev/README.md index e4d0012..534e43c 100644 --- a/.cloud-dev/README.md +++ b/.cloud-dev/README.md @@ -29,6 +29,7 @@ - **cmake**: 构建工具 - **telnet**: 网络调试 - **redis-tools**: Redis 命令行工具 +- **ping**: 网络连通性测试 - **potrace**: 位图转矢量图 - **imagemagick**: 图像处理工具 - **uv**: 快速 Python 包管理器 diff --git a/.cloud-dev/docker-compose.yml b/.cloud-dev/docker-compose.yml index ca25a48..c65d38c 100644 --- a/.cloud-dev/docker-compose.yml +++ b/.cloud-dev/docker-compose.yml @@ -11,14 +11,12 @@ services: - "7681:7681" # ttyd (Web Terminal) - "3000:3000" # Next.js Dev Server volumes: - # 项目代码映射(使用 cached 模式提高性能) + # 项目代码映射(如果映射到Windows/Mac宿主机的本地目录,使用 cached 模式提高性能) - ../:/workspace:cached - # node_modules 使用命名卷以提高性能 - - node_modules:/workspace/node_modules - # pnpm store 缓存 - - pnpm_store:/root/.local/share/pnpm/store - # Git 配置(可选,如果需要保留 Git 配置) - - ~/.gitconfig:/root/.gitconfig:ro + # Code Server 配置(包含 config.yaml 和密码) + - code-server-config:/root/.config/code-server + # Code Server 数据(插件、用户设置、扩展数据) + - code-server-data:/root/.local/share/code-server environment: - NODE_ENV=development - TZ=Asia/Shanghai diff --git a/.env.example b/.env.example index b975358..dfa2e6a 100644 --- a/.env.example +++ b/.env.example @@ -26,6 +26,7 @@ POSTGRESQL_PASSWORD= POSTGRESQL_PORT= DATABASE_URL= +REDIS_HOST= REDIS_PORT= REDIS_PASSWORD= @@ -46,7 +47,6 @@ DB_PARALLEL_LIMIT = # NextAuth.js Configuration NEXTAUTH_SECRET= -NEXTAUTH_URL= PKUAI_API_KEY= PKUAI_API_BASE= diff --git a/.roo/mcp.json b/.roo/mcp.json deleted file mode 100644 index 7a61061..0000000 --- a/.roo/mcp.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "mcpServers":{ - "ai-elements": { - "command": "npx", - "args": [ - "-y", - "mcp-remote", - "https://registry.ai-sdk.dev/api/mcp" - ] - } - } -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..42e6293 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "prisma.pinToPrisma6": true +} \ No newline at end of file diff --git a/.clinerules/TEMPLATE_README.md b/CLAUDE.md similarity index 98% rename from .clinerules/TEMPLATE_README.md rename to CLAUDE.md index b3b58e6..f8c417f 100644 --- a/.clinerules/TEMPLATE_README.md +++ b/CLAUDE.md @@ -1,3 +1,7 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + ## 项目说明 本项目模板(Hair Keeper v1.1.0)是一个高度集成、深度定制、约定优于配置的全栈Web应用模板,旨在保持灵活性的同时提供一套基于成熟架构的开发底座,自带身份认证、权限控制、丰富前端组件、文件上传、后台任务、智能体开发等丰富功能,提供AI开发辅助,免于纠结功能如何实现,可快速上手专注于业务逻辑。 diff --git a/README.md b/README.md index b3b58e6..30493ce 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ Hair Keeper是个诙谐有趣的名称,和项目内容毫无关系。 ### 其他 - `constants/`:项目全局常量管理 - `constants/permissions.ts`:权限定义,支持前后端一致的权限控制,支持解析复杂的权限表达式(如"A&B|(C&D)") +- `constants/menu.ts`: 菜单管理工具库,提供菜单项定义、查询、权限过滤等功能 - `lib/schema/`:集中管理数据验证schema,定义前后端统一的数据结构和验证规则,前端对默认值等其他要求写在表单组件中,后端对默认值等其他要求写在接口文件中,使用z.input而不是z.infer来获取Schema的输入类型 - `lib/algorithom.ts`:通用计算机算法实现,例如拓扑排序 - `lib/format.ts`:数据格式化工具函数库 diff --git a/package.json b/package.json index e472740..894fcdd 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "minio": "^8.0.6", "motion": "^12.23.22", "nanoid": "^5.1.6", - "next": "~15.4.0", + "next": "~15.4.8", "next-auth": "^4.24.11", "next-themes": "^0.4.6", "nuqs": "^2.6.0", @@ -109,7 +109,6 @@ "@types/react-dom": "^19", "eslint": "^9", "eslint-config-next": "15.5.2", - "react-icons": "^5.5.0", "react-live": "^4.1.8", "shadcn": "^3.5.0", "tailwindcss": "^4", diff --git a/quickstart.sh b/quickstart.sh new file mode 100644 index 0000000..7e6e454 --- /dev/null +++ b/quickstart.sh @@ -0,0 +1,2 @@ +#!/bin/bash +# 您可以运行这个脚本来快速初始化和使用本模板项目 diff --git a/simple_deploy.sh b/simple_deploy.sh index 089a916..a253ff0 100644 --- a/simple_deploy.sh +++ b/simple_deploy.sh @@ -10,6 +10,7 @@ REMOTE_PORT="" PROJECT_NAME="" REMOTE_DIR="~/$PROJECT_NAME" +pnpm run lint echo "🔨 开始构建项目..." pnpm run build diff --git a/src/app/(main)/welcome.tsx b/src/app/(main)/welcome.tsx index 2d602f0..84838e2 100644 --- a/src/app/(main)/welcome.tsx +++ b/src/app/(main)/welcome.tsx @@ -29,7 +29,7 @@ export function WelcomeDialog({ open, onOpenChange }: WelcomeDialogProps) { 欢迎您,开发者 - {/* 内容暂时没想好,先不实现 */} + 感谢您选择 Hair Keeper 作为开发底座,祝您开发顺利!
diff --git a/src/server/redis.ts b/src/server/redis.ts index b22c724..0e1c501 100644 --- a/src/server/redis.ts +++ b/src/server/redis.ts @@ -13,7 +13,7 @@ export function getRedisClient() { const redisPassword = process.env.REDIS_PASSWORD redisClient = new Redis({ - host: 'localhost', + host: process.env.REDIS_HOST || 'localhost', port: parseInt(redisPort, 10), password: redisPassword, maxRetriesPerRequest: null, // BullMQ 推荐设置