# wow-note-react
**Repository Path**: uyevan/wow-note-react
## Basic Information
- **Project Name**: wow-note-react
- **Description**: 📚基于React,SpringCloud框架的下一代个人云笔记项目前端.其接入到了Next.js、NextUI、TailwindCss、Docker等技术栈.
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://note.jfkj.xyz
- **GVP Project**: No
## Statistics
- **Stars**: 81
- **Forks**: 30
- **Created**: 2024-02-11
- **Last Updated**: 2025-05-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: React, Tailwind, Nodejs, TypeScript, nextjs
## README
# wow-note 个人云储笔记
🍔
> 本仓库为前端仓库,后端仓库请访问 [https://gitee.com/uyevan/wow-note-spring](https://gitee.com/uyevan/wow-note-spring)
>
> 在线预览: [https://note.jfkj.xyz](https://note.jfkj.xyz)
## 项目简介 👨💻
Wow-note 是一个功能强大的个人云笔记平台,专注于笔记的**创建**、**管理**、**分享**和**协作**。通过丰富的功能和直观的界面,让用户可以随时随地记录灵感、整理知识并与他人共享。项目采用前后端分离架构,前端基于Next.js实现,后端采用Spring Cloud微服务架构。
最新版本引入了多项高级功能,包括实时协作编辑、AI辅助写作、ElasticSearch搜索支持、MongoDB文档存储等,大幅提升了用户体验和系统性能。
## 系统架构 🪜

### 前端架构
- 基于Next.js的SSR架构
- React组件化开发
- 响应式UI设计
- 微前端模块化结构
### 后端架构
- Spring Cloud微服务架构
- 多数据源支持(MySQL + MongoDB + ElasticSearch)
- 消息队列(RabbitMQ)实现异步处理
- 分布式日志系统
### 持续集成与部署
- Jenkins实现自动化构建与部署
- Docker容器化应用打包
- 阿里云容器镜像托管
- 自动化测试与质量检测
## 功能特性 🎉
### 核心功能
- **笔记管理**: 创建、编辑、删除、归档笔记,支持富文本和Markdown格式
- **集合管理**: 创建文档集合,实现层级化组织笔记
- **标签系统**: 灵活标记笔记,快速分类和检索
- **分享功能**: 生成分享链接,控制访问权限
- **搜索系统**: 支持基于ElasticSearch和MySQL的全文检索
- **用户管理**: 用户注册、登录、权限控制
### 新增特性
- **实时协作**: 多人同时编辑一篇笔记,实时同步变更
- **AI辅助**: 智能摘要生成、内容补全、写作建议
- **历史版本**: 笔记修改历史记录,支持版本回溯
- **评论系统**: 对笔记添加评论,促进交流
- **移动适配**: 全面优化移动端体验
- **离线支持**: 支持离线编辑,自动同步
- **完整日志**: 详细记录用户操作,方便追踪和分析
## 技术栈 🍵
### 前端技术
- **TypeScript**: 类型安全的JavaScript超集
- **React 18**: 用户界面构建库
- **Next.js 14**: React服务端渲染框架
- **NextUI**: 高质量React UI组件库
- **TailwindCSS**: 实用型CSS框架
- **Axios**: HTTP客户端
- **React Query**: 数据获取和缓存
- **Zustand**: 状态管理
- **Monaco Editor**: 代码编辑器
### 后端技术
- **Spring Cloud**: 微服务框架
- **Spring Boot**: Java应用开发框架
- **MyBatis-Plus**: ORM框架
- **MySQL**: 关系型数据库
- **MongoDB**: 文档型数据库
- **ElasticSearch**: 搜索引擎
- **RabbitMQ**: 消息队列
- **Redis**: 缓存系统
- **JWT**: 身份认证
### 开发与部署
- **Docker**: 容器化部署
- **Jenkins**: CI/CD自动化
- **Nginx**: 负载均衡和反向代理
- **Git**: 版本控制
## 部署方案 🚀
### Docker容器化部署
项目使用Docker实现前端应用的容器化部署,以下是Dockerfile配置:
```dockerfile
# 构建阶段
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install --save --force
COPY . .
RUN npm run build
# 运行阶段
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/next.config.js ./
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
# 暴露端口
EXPOSE 3000
# 启动应用
CMD ["npm", "start"]
```
### CI/CD自动化流程
项目通过Jenkins实现前端持续集成与部署:
1. **代码拉取**: 从Git仓库拉取最新代码
2. **安装依赖**: 执行`npm install`安装项目依赖
3. **代码检查**: 运行ESLint检查代码质量
4. **单元测试**: 执行自动化测试
5. **构建应用**: 运行`npm run build`构建生产版本
6. **镜像构建**: 构建Docker镜像
7. **镜像推送**: 推送到阿里云容器镜像仓库
8. **部署应用**: 更新运行环境中的容器
```
代码提交 → Jenkins触发 → 依赖安装 → 测试构建 → 镜像构建推送 → 容器部署
```
### Nginx配置与部署
前端应用使用Nginx作为Web服务器和反向代理,典型配置如下:
```nginx
server {
listen 80;
server_name note.jfkj.xyz;
# 重定向到HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name note.jfkj.xyz;
# SSL配置
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
# 前端应用
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# API请求转发到后端
location /api {
proxy_pass http://gateway-service:9091;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
```
## 快速开始 🔛
### 本地开发环境
1. **环境要求**
- Node.js: v18.17.0+
- npm: 9.6.7+
2. **克隆仓库**
```bash
git clone https://gitee.com/uyevan/wow-note-react.git
cd wow-note-react
```
3. **安装依赖**
```bash
npm install --save --force
```
4. **配置环境**
- 在`next.config.js`中配置API代理
- 在`app/constants/openApiConstants.tsx`中设置API基础URL
5. **启动开发服务器**
```bash
npm run dev
```
开发服务器将在`http://localhost:3000`启动
6. **生产构建**
```bash
npm run build
npm run start
```
### Docker部署
1. **拉取镜像**
```bash
docker pull registry.cn-shenzhen.aliyuncs.com/wow-note-react/wow-note-react:latest
```
2. **运行容器**
```bash
docker run -d -p 3000:3000 --name wow-note-react registry.cn-shenzhen.aliyuncs.com/wow-note-react/wow-note-react:latest
```
3. **使用Docker Compose**
```yaml
version: '3'
services:
wow-note-frontend:
image: registry.cn-shenzhen.aliyuncs.com/wow-note-react/wow-note-react:latest
container_name: wow-note-frontend
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- API_URL=https://api.jfkj.xyz
restart: always
```
## 项目结构 🗃️
```
├─app
│ ├─assets
│ │ ├─css // 样式表文件
│ │ ├─data // 静态数据文件
│ │ └─icons // 图标文件
│ ├─components
│ │ ├─ai // AI相关组件
│ │ ├─auth // 身份验证组件
│ │ ├─collaboration // 协作功能组件
│ │ ├─common // 通用组件
│ │ ├─editor // 编辑器组件
│ │ ├─home // 主页组件
│ │ └─profile // 用户资料组件
│ │ ├─folder // 文件夹组件
│ │ ├─note // 笔记组件
│ │ └─share // 分享组件
│ ├─config // 配置文件
│ ├─constants // 常量文件
│ ├─hooks // 自定义Hooks
│ ├─pages // 页面组件
│ │ ├─auth // 身份验证页面
│ │ ├─note // 笔记页面
│ │ ├─profile // 用户页面
│ │ └─share // 分享页面
│ ├─service // 服务层
│ │ ├─api // API调用
│ │ ├─components // 服务组件
│ │ └─view // 视图相关的服务文件
│ ├─store // 状态管理
│ ├─types // TypeScript类型定义
│ └─utils // 工具函数和辅助函数
```
## 项目预览 💻
> NextUI支持完全响应式设计,以下是桌面端的预览截图,移动端有专门的优化布局











## 特别鸣谢 🏆
感谢以下开源项目和社区的支持:
- React社区
- Next.js团队
- NextUI团队
- TailwindCSS社区
- Spring Cloud & Spring Boot社区
## 贡献指南 🤝
欢迎贡献代码、提交问题或建议!请先fork本仓库,然后提交Pull Request。
## 联系方式 📬
项目维护者: Evan
- Email: [uyevan@163.com](mailto:uyevan@163.com)
- 微信:
## 许可证 📄
本项目采用MIT许可证,详情请查看LICENSE文件。