# NoteWeb **Repository Path**: rongxi/note-web ## Basic Information - **Project Name**: NoteWeb - **Description**: 留言板项目-Python版本 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/rongxi/note-web - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-02 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NoteWeb - 便签墙应用 一个简洁美观的在线便签墙应用,支持添加、查看、拖动和管理便签,使用Python Flask构建。 ## 项目概述 `NoteWeb` 是一个基于 Web 技术构建的便签墙应用,用户可以在界面上添加简短的便签,这些便签会以卡片形式显示在虚拟的便签墙上。每个便签都支持拖动、最大化、最小化和关闭等操作,提供了良好的用户交互体验。 ## 技术栈更新 ### 前端 - HTML5 - CSS3 - JavaScript (原生) ### 后端 - **Python 3.9** - **Flask 2.x** - SQLite - Gunicorn (WSGI服务器) - jieba (中文分词) ### 部署支持 - Docker - Nginx (可选,作为反向代理) - Supervisor (可选,进程管理) ## 功能特点 ### 用户界面 - 美观的毛玻璃效果输入框 - 随机颜色生成的便签卡片 - 桌面应用风格的窗口控制按钮 - 响应式设计,支持移动端 ### 便签操作 - 拖动:通过拖动便签标题栏移动便签 - 最大化:双击标题栏或点击最大化按钮使便签全屏显示 - 最小化:点击最小化按钮移除便签 - 关闭:点击关闭按钮移除便签 - 添加新便签:通过底部输入框添加新的便签内容 ### 数据持久化 - 所有便签内容保存到SQLite数据库 - 支持最多150条最近的便签记录 - 自动按时间降序排列显示 ### 新增功能 - 词云生成:基于便签内容生成词云图 - XSS攻击防护 - 内容长度限制 - 关键词过滤 - 接口限流 ## API 文档 ### 获取所有便签 ``` GET /api/notes ``` - **响应**:返回最近100条便签内容,按创建时间降序排列 - **数据格式**:字符串数组 ### 添加新便签 ``` POST /api/notes Content-Type: application/json { "content": "便签内容" } ``` - **请求体**: - `content`:便签内容,最大长度30字符 - **响应**: ```json { "StatusCode": 200, "Successful": true, "Message": "新增便签成功", "Data": null } ``` ## 项目结构 ``` NoteWeb-master/ ├── NoteWeb/ # 主应用目录 │ ├── app.py # Flask应用入口 │ ├── wsgi.py # Gunicorn入口点 │ ├── config.py # 应用配置文件 │ ├── models/ # 数据库模型 │ ├── Services/ # 业务服务(含词云生成) │ ├── wwwroot/ # 静态资源 │ │ ├── img/ # 图片资源 │ │ └── index.html # 前端页面 │ ├── requirements.txt # Python依赖列表 │ ├── gunicorn_config.py # Gunicorn配置 │ ├── noteweb.db # SQLite数据库文件 │ └── DEPLOYMENT.md # 部署文档 ├── NoteWeb/Dockerfile # Docker构建文件 └── fonts/ # 字体文件(用于词云) ``` ## 开始使用 ### 本地开发环境设置 #### 前提条件 - Python 3.9 或更高版本 - pip 和 venv - 支持的浏览器:Chrome, Firefox, Safari, Edge #### 运行应用 1. 克隆项目到本地 2. 进入项目目录 3. 创建并激活虚拟环境 4. 安装依赖 5. 运行应用: ```bash # 进入项目目录 cd NoteWeb-master/NoteWeb # 创建虚拟环境 python -m venv venv # 激活虚拟环境(Windows) venv\Scripts\activate # 或(Linux/Mac) source venv/bin/activate # 安装依赖 pip install -r requirements.txt # 运行应用 python run.py ``` 6. 打开浏览器访问 `http://localhost:1556` ### Docker部署 1. 安装Docker 2. 克隆项目到本地 3. 进入NoteWeb目录 4. 构建Docker镜像并运行容器: ```bash # 进入项目根目录 cd NoteWeb-master # 构建Docker镜像(在项目根目录执行) docker build -t noteweb -f NoteWeb/Dockerfile . # 停止并删除现有容器(如果存在) docker stop noteweb || true docker rm noteweb || true # 运行Docker容器 docker run -d \ --name noteweb \ -p 1556:1556 \ -v $(pwd)/NoteWeb/noteweb.db:/app/noteweb.db \ -v $(pwd)/NoteWeb/logs:/app/logs \ noteweb ``` 应用将在 `http://localhost:1556` 上运行。 ## 生产环境部署 详细的部署指南请参考项目中的 文件,其中包含两种部署方式: 1. **传统Linux服务器部署**:包括环境准备、代码部署、Gunicorn配置、Nginx设置等 2. **Docker容器部署**:使用Docker和Docker Compose简化部署流程 ## 配置说明 主要配置文件: 1. **config.py**:应用配置,包括开发环境和生产环境设置 2. **gunicorn_config.py**:Gunicorn服务器配置 ## 数据持久化 - SQLite数据库文件 `noteweb.db` 默认位于应用根目录 - 使用Docker部署时,数据库文件通过卷挂载实现持久化 ## 注意事项 - 内容长度限制为30字 - 已实现XSS攻击防护 - 包含关键词过滤功能 - 接口已添加限流措施 - 词云生成需要中文字体支持 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目。 ## 许可证 [MIT License](LICENSE)