Files
chinese-family-tree-2/README.md
T
freedakgmail 00cfae381b 0.0.2.0
2025-11-23 09:24:14 +08:00

168 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 华夏谱 (HuaXiaPu) - 中国家族树管理系统
现代化的中国家族树管理系统,支持多用户协作、权限管理、数据导入导出等功能。
## 技术栈
- **前端**: Next.js 16, React 19, TypeScript, TailwindCSS
- **后端**: Next.js API Routes, Prisma ORM
- **数据库**: PostgreSQL
- **认证**: NextAuth.js
- **UI组件**: shadcn/ui, Radix UI
- **图标**: Lucide Icons
## 功能特性
### 核心功能
- ✅ 家族树可视化展示
- ✅ 成员信息管理(基本信息、照片、故事)
- ✅ 多家族树支持
- ✅ 用户认证与授权
- ✅ 协作者管理(所有者、编辑者、查看者)
- ✅ 操作日志记录
- ✅ GEDCOM 格式导入导出
- ✅ 数据备份与恢复
### 权限系统
- **所有者 (OWNER)**: 完全控制权限
- **编辑者 (EDITOR)**: 可以编辑成员信息
- **查看者 (VIEWER)**: 只读访问权限
## 快速开始
### 环境要求
- Node.js 18+
- PostgreSQL 14+
- pnpm (推荐)
### 安装
```bash
# 克隆项目
git clone <repository-url>
cd chinese-family-tree
# 安装依赖
pnpm install
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库连接和认证密钥
# 初始化数据库
pnpm prisma generate
pnpm prisma db push
# 运行开发服务器
pnpm dev
```
访问 http://localhost:3000
### 生产构建
```bash
# 构建
pnpm build
# 启动生产服务器
pnpm start
```
## 环境变量
创建 `.env` 文件并配置以下变量:
```env
# 数据库
DATABASE_URL="postgresql://user:password@localhost:5432/family_tree"
# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key-here"
# 可选:OAuth 提供商
# GOOGLE_CLIENT_ID=""
# GOOGLE_CLIENT_SECRET=""
```
## 项目结构
```
├── app/ # Next.js App Router
│ ├── api/ # API 路由
│ ├── auth/ # 认证页面
│ ├── members/ # 成员管理
│ ├── settings/ # 设置页面
│ └── tree/ # 家族树可视化
├── components/ # React 组件
│ ├── ui/ # UI 基础组件
│ ├── members/ # 成员相关组件
│ └── settings/ # 设置相关组件
├── context/ # React Context
├── lib/ # 工具函数
├── prisma/ # 数据库 Schema
└── types/ # TypeScript 类型定义
```
## 数据库 Schema
主要数据表:
- `User`: 用户信息
- `FamilyTree`: 家族树
- `FamilyMember`: 家族成员
- `TreeCollaborator`: 协作者
- `ActivityLog`: 操作日志
## API 路由
### 认证
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/signin` - 用户登录
### 家族树
- `GET /api/trees` - 获取家族树列表
- `POST /api/trees` - 创建家族树
- `GET /api/trees/[treeId]` - 获取单个家族树
- `PUT /api/trees/[treeId]` - 更新家族树
- `DELETE /api/trees/[treeId]` - 删除家族树
### 成员
- `GET /api/trees/[treeId]/members` - 获取成员列表
- `POST /api/trees/[treeId]/members` - 创建成员
- `PUT /api/trees/[treeId]/members/[memberId]` - 更新成员
- `DELETE /api/trees/[treeId]/members/[memberId]` - 删除成员
### 协作者
- `GET /api/trees/[treeId]/collaborators` - 获取协作者列表
- `POST /api/trees/[treeId]/collaborators` - 添加协作者
- `DELETE /api/trees/[treeId]/collaborators` - 移除协作者
### 操作日志
- `GET /api/trees/[treeId]/activity-logs` - 获取操作日志
- `DELETE /api/trees/[treeId]/activity-logs` - 清空操作日志(仅所有者)
## 开发指南
### 代码规范
- 使用 TypeScript 严格模式
- 遵循 ESLint 规则
- 使用 Prettier 格式化代码
### 提交规范
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 代码重构
- test: 测试相关
- chore: 构建/工具相关
## 许可证
MIT License
## 贡献
欢迎提交 Issue 和 Pull Request