# 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**: 82
- **Forks**: 31
- **Created**: 2024-02-11
- **Last Updated**: 2025-10-17
## 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文件。
## 许可证 📄
本项目采用MIT许可证,详情请查看LICENSE文件。