# react-book-excerpt **Repository Path**: hlw422/react-book-excerpt ## Basic Information - **Project Name**: react-book-excerpt - **Description**: 一个基于 React + Node.js + PostgreSQL 的全栈书摘分享应用。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-25 - **Last Updated**: 2026-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 书摘分享应用 一个基于 React + Node.js + PostgreSQL 的全栈书摘分享应用。 ## 功能特性 - 📚 书摘墙 - 浏览公开书摘 - 👤 用户认证 - 注册/登录(JWT) - ✏️ 书摘管理 - 发布、编辑、删除书摘 - 🔍 搜索功能 - 按书名、作者、内容搜索 - 🔒 私密书摘 - 仅自己可见的书摘 ## 技术栈 ### 前端 - React 18 - Vite - Tailwind CSS - Axios ### 后端 - Node.js - Express - PostgreSQL - JWT 认证 ## 快速开始 ### 本地开发 1. **克隆代码** ```bash git clone cd react-book-excerpt ``` 2. **安装依赖** ```bash # 前端依赖 npm install # 后端依赖 cd server npm install cd .. ``` 3. **配置数据库** - 确保 PostgreSQL 已安装并运行 - 创建数据库:`CREATE DATABASE book_excerpt;` - 修改 `server/.env` 中的数据库连接信息 4. **初始化数据库** ```bash cd server node init-db.js cd .. ``` 5. **启动服务** ```bash # 启动后端(端口 3002) cd server node server.js # 启动前端(新终端,端口 5173) npm run dev ``` 6. **访问应用** - 前端: http://localhost:5173 - API: http://localhost:3002/api/health ### Docker 部署(推荐) #### 开发环境 ```bash # 一键启动 docker compose up -d # 访问应用 # http://localhost:3002 ``` #### 生产环境 1. **配置环境变量** ```bash cp .env.example .env # 编辑 .env,设置安全的密码 ``` 2. **启动服务** ```bash docker compose -f docker-compose.prod.yml --env-file .env up -d ``` 3. **查看状态** ```bash docker compose ps ``` 详细部署说明请参考 [DOCKER-DEPLOY.md](./DOCKER-DEPLOY.md) ## 项目结构 ``` react-book-excerpt/ ├── src/ # 前端源码 │ ├── components/ # React 组件 │ ├── contexts/ # React Context │ ├── hooks/ # 自定义 Hooks │ └── utils/ # 工具函数 ├── server/ # 后端源码 │ ├── config/ # 配置文件 │ ├── middleware/ # 中间件 │ ├── routes/ # 路由 │ └── utils/ # 工具函数 ├── docker-compose.yml # Docker 开发环境配置 ├── docker-compose.prod.yml # Docker 生产环境配置 ├── Dockerfile # Docker 镜像构建文件 └── DOCKER-DEPLOY.md # Docker 部署详细说明 ``` ## API 接口 | 方法 | 路径 | 功能 | 鉴权 | |------|------|------|------| | POST | /api/auth/register | 用户注册 | 无 | | POST | /api/auth/login | 用户登录 | 无 | | GET | /api/auth/me | 获取当前用户 | JWT | | GET | /api/excerpts | 获取公开书摘 | 无 | | GET | /api/excerpts/my | 获取我的书摘 | JWT | | POST | /api/excerpts | 创建书摘 | JWT | | PUT | /api/excerpts/:id | 更新书摘 | JWT | | DELETE | /api/excerpts/:id | 删除书摘 | JWT | | GET | /api/excerpts/search | 搜索书摘 | 无 | ## 示例账号 - **bookworm** / password123 - **reader** / password123 ## 部署到 CentOS ### 方式一:一键脚本 ```bash # 上传代码到服务器 scp -r . root@your-server:/opt/book-excerpt # 登录服务器 ssh root@your-server # 运行部署脚本 cd /opt/book-excerpt bash centos-deploy.sh ``` ### 方式二:手动部署 ```bash # 1. 安装 Docker sudo yum install -y docker-ce sudo systemctl start docker sudo systemctl enable docker # 2. 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # 3. 配置环境变量 cp .env.example .env vi .env # 修改密码 # 4. 启动服务 docker compose -f docker-compose.prod.yml --env-file .env up -d ``` ## 常用命令 ```bash # 查看日志 docker compose logs -f # 重启服务 docker compose restart # 停止服务 docker compose down # 重新构建 docker compose build --no-cache docker compose up -d # 备份数据库 docker exec book_excerpt_db pg_dump -U postgres book_excerpt > backup.sql ``` ## 故障排查 ### 端口被占用 ```bash # 查看端口占用 netstat -tulpn | grep 3002 # 修改端口 # 编辑 .env 文件 APP_PORT=8080 ``` ### 数据库连接失败 ```bash # 检查数据库状态 docker compose ps postgres # 查看数据库日志 docker compose logs postgres # 进入数据库容器 docker exec -it book_excerpt_db psql -U postgres -d book_excerpt ``` ### 应用启动失败 ```bash # 查看应用日志 docker compose logs app # 进入应用容器 docker exec -it book_excerpt_app sh ``` ## 安全建议 1. **修改默认密码** - 必须修改数据库和 JWT 密钥 2. **限制端口访问** - 使用防火墙只开放必要端口 3. **定期备份** - 设置定时任务备份数据库 4. **使用 HTTPS** - 生产环境必须启用 HTTPS 5. **更新依赖** - 定期更新 npm 依赖以获取安全补丁 ## 许可证 MIT ## 贡献 欢迎提交 Issue 和 Pull Request!