xnote-web


Namexnote-web JSON
Version 2025.8.31 PyPI version JSON
download
home_pageNone
Summaryxnote-web框架
upload_time2025-08-31 08:52:36
maintainerNone
docs_urlNone
authormark
requires_pythonNone
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Xnote

[![Coverage Status](https://coveralls.io/repos/github/xupingmao/xnote/badge.svg?branch=master)](https://coveralls.io/github/xupingmao/xnote?branch=master)
![Docker Image](https://img.shields.io/docker/pulls/donjuanplatinum/xnote)

xnote是一款面向个人的轻量级笔记系统,提供多种维度的数据管理功能,致力于把个人从信息过载中解放出来。它主要有如下特性

- 拥有丰富的数据管理能力,支持多种笔记格式以及文件管理功能
- 默认提供了一些常用的工具,同时提供扩展能力,用户可以编写各种插件满足自己的需求
- 跨平台,支持Windows、Mac、Linux三大平台,可以在云服务上部署,也可以在本地运行
- 100%自由的数据控制权,可以运行在多种数据库环境中
- 支持小规模的多用户,面向多用户的商业场景使用请谨慎

目前xnote定位是一个面向个人使用的小型笔记产品,不会重点投入以下方向
- 大规模的多用户支持
- 多用户协作功能

如果你热爱技术爱折腾、需要多元的数据处理能力、希望完全掌控自己的文档数据,本产品将会是一个不错的尝试,欢迎试用反馈。

- 体验demo网址 http://101.43.99.188:5557
- 测试账号 user01/123456, user02/123456 友情提示:管理员会不定期清理数据,请勿存放重要数据

以下是一些页面展示

功能列表
![功能列表](https://cdn.jsdelivr.net/gh/xupingmao/xnote-doc/images/v2.9.6/app_index.png)

笔记本
![笔记](https://cdn.jsdelivr.net/gh/xupingmao/xnote-doc/images/v2.9.7/books.png)

markdown页面
![markdown](https://cdn.jsdelivr.net/gh/xupingmao/xnote-doc/images/v2.9.6/markdown.png)

-----
## 项目地址

- [github](https://github.com/xupingmao/xnote)
- [gitee](https://gitee.com/xupingmao/xnote)

如果使用过程中遇到问题,欢迎在项目主页提issue或者评论。

## 安装&运行

### 物理机安装

#### 安装依赖环境

- Python >= 3.6
- 安装依赖的软件包
    - 最小化安装(使用sqlite) `python3 -m pip install -r config/requirements.min.txt`
    - Mac/Linux执行 ```python -m pip install -r config/requirements.txt```
    - Windows执行 `python -m pip install -r config/requirements.win.txt`

#### 配置和启动

默认的配置文件位于`config/boot/boot.default.properties`,具体的功能参考配置的注释

```sh
# 切换到xnote目录
> cd xnote
# 复制配置并且进行自定义配置
> cp config/boot/boot.min.properties boot.local.properties
# 启动
> python3 app.py --config boot.local.properties
```

如果不修改端口号,启动之后在浏览器打开 http://localhost:1234/ 就可以使用了,初始化的管理员账号是admin,默认密码是 123456

### Docker-compose

1. 创建持久化数据目录 ```mkdir data```
2. 创建配置文件 `cp ./config/boot/boot.default.properties ./boot.local.properties`
3. 根据自己的需求修改 `boot.local.properties`
4. 执行命令 ```docker-compose up -d```

### 在云服务平台部署

- 新浪SAE TODO
- [CentOS - 百度BAE](https://blog.csdn.net/u011320646/article/details/126334377) 

## 主要功能

### 笔记管理
- 支持多种格式:markdown/表格/相册/列表
- 组织功能:通过笔记本/标签/置顶/关联笔记来管理文档
- 分享功能:在笔记的详情页面,点击【更多】下拉列表里面的分享,可以将文章分享给未登录用户查看
- 优先级管理:置顶、归档功能
- 备份功能:保存每次笔记的修改历史
- 搜索功能:支持整个知识库搜索和项目内搜索
- 评论功能:支持登录用户的评论
- 访问统计:最近、常用的访问统计
- 其他文档工具

### 文件管理
- 多种视图:列表、网格
- 文件操作:文件上传、下载、新建、删除、重命名、移动等操作
- 文件工具:代码编辑器、文本阅读器、二进制查看器、文件内容搜索等等
- 大文件支持:文件下载支持断点续传,支持超大文件上传(测试过1G文件)
- 扩展:支持开发插件扩展

### 工具箱
- Python文档(pydoc)
- 文本处理(文本对比、代码生成、密码生成)
- 编解码工具(base64、md5、进制转换、等等)
- 条形码、二维码生成器
- 图像处理(合并、拆分、灰度转换)
- 提供扩展能力,开发者可以自己开发插件

## 系统扩展

### 插件机制

由于每个人的需求不同,单一系统很难满足,开发者可以根据自己需要编写插件来扩展系统的功能。具体可以参考文档 [插件扩展](./docs/plugins.md)。

具体特性如下

- 插件中可以监听系统消息,包括笔记、提醒、文件、时间、系统五种类型的消息
- 插件可以通过`category`属性设置分类,显示在笔记、文件、系统等功能的选项入口中
- 可以通过模板创建插件

### 二次开发

- xnote现在已经打包上传到pypi[xnote-web](https://pypi.org/project/xnote-web/), 这样可以通过模块化的方式进行二次开发


## 相关文档
- [更新日志](./docs/changelog.md)
- [系统架构](./docs/architecture.md)
- [编码规范](./docs/code_style.md)
- [插件扩展](./docs/plugins.md)
- [搜索扩展](./docs/search_extension.md)
- [数据库迁移](./docs/db_migrate.md)

## 协议

- GPL

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "xnote-web",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "mark",
    "author_email": "578749341@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/61/d6/dbdda400f99088ab53ba639139a49483b275a50f26827645a993ccae85e4/xnote_web-2025.8.31.tar.gz",
    "platform": null,
    "description": "# Xnote\r\n\r\n[![Coverage Status](https://coveralls.io/repos/github/xupingmao/xnote/badge.svg?branch=master)](https://coveralls.io/github/xupingmao/xnote?branch=master)\r\n![Docker Image](https://img.shields.io/docker/pulls/donjuanplatinum/xnote)\r\n\r\nxnote\u662f\u4e00\u6b3e\u9762\u5411\u4e2a\u4eba\u7684\u8f7b\u91cf\u7ea7\u7b14\u8bb0\u7cfb\u7edf\uff0c\u63d0\u4f9b\u591a\u79cd\u7ef4\u5ea6\u7684\u6570\u636e\u7ba1\u7406\u529f\u80fd\uff0c\u81f4\u529b\u4e8e\u628a\u4e2a\u4eba\u4ece\u4fe1\u606f\u8fc7\u8f7d\u4e2d\u89e3\u653e\u51fa\u6765\u3002\u5b83\u4e3b\u8981\u6709\u5982\u4e0b\u7279\u6027\r\n\r\n- \u62e5\u6709\u4e30\u5bcc\u7684\u6570\u636e\u7ba1\u7406\u80fd\u529b\uff0c\u652f\u6301\u591a\u79cd\u7b14\u8bb0\u683c\u5f0f\u4ee5\u53ca\u6587\u4ef6\u7ba1\u7406\u529f\u80fd\r\n- \u9ed8\u8ba4\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5e38\u7528\u7684\u5de5\u5177\uff0c\u540c\u65f6\u63d0\u4f9b\u6269\u5c55\u80fd\u529b\uff0c\u7528\u6237\u53ef\u4ee5\u7f16\u5199\u5404\u79cd\u63d2\u4ef6\u6ee1\u8db3\u81ea\u5df1\u7684\u9700\u6c42\r\n- \u8de8\u5e73\u53f0\uff0c\u652f\u6301Windows\u3001Mac\u3001Linux\u4e09\u5927\u5e73\u53f0\uff0c\u53ef\u4ee5\u5728\u4e91\u670d\u52a1\u4e0a\u90e8\u7f72\uff0c\u4e5f\u53ef\u4ee5\u5728\u672c\u5730\u8fd0\u884c\r\n- 100%\u81ea\u7531\u7684\u6570\u636e\u63a7\u5236\u6743\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728\u591a\u79cd\u6570\u636e\u5e93\u73af\u5883\u4e2d\r\n- \u652f\u6301\u5c0f\u89c4\u6a21\u7684\u591a\u7528\u6237\uff0c\u9762\u5411\u591a\u7528\u6237\u7684\u5546\u4e1a\u573a\u666f\u4f7f\u7528\u8bf7\u8c28\u614e\r\n\r\n\u76ee\u524dxnote\u5b9a\u4f4d\u662f\u4e00\u4e2a\u9762\u5411\u4e2a\u4eba\u4f7f\u7528\u7684\u5c0f\u578b\u7b14\u8bb0\u4ea7\u54c1\uff0c\u4e0d\u4f1a\u91cd\u70b9\u6295\u5165\u4ee5\u4e0b\u65b9\u5411\r\n- \u5927\u89c4\u6a21\u7684\u591a\u7528\u6237\u652f\u6301\r\n- \u591a\u7528\u6237\u534f\u4f5c\u529f\u80fd\r\n\r\n\u5982\u679c\u4f60\u70ed\u7231\u6280\u672f\u7231\u6298\u817e\u3001\u9700\u8981\u591a\u5143\u7684\u6570\u636e\u5904\u7406\u80fd\u529b\u3001\u5e0c\u671b\u5b8c\u5168\u638c\u63a7\u81ea\u5df1\u7684\u6587\u6863\u6570\u636e\uff0c\u672c\u4ea7\u54c1\u5c06\u4f1a\u662f\u4e00\u4e2a\u4e0d\u9519\u7684\u5c1d\u8bd5\uff0c\u6b22\u8fce\u8bd5\u7528\u53cd\u9988\u3002\r\n\r\n- \u4f53\u9a8cdemo\u7f51\u5740 http://101.43.99.188:5557\r\n- \u6d4b\u8bd5\u8d26\u53f7 user01/123456, user02/123456 \u53cb\u60c5\u63d0\u793a\uff1a\u7ba1\u7406\u5458\u4f1a\u4e0d\u5b9a\u671f\u6e05\u7406\u6570\u636e\uff0c\u8bf7\u52ff\u5b58\u653e\u91cd\u8981\u6570\u636e\r\n\r\n\u4ee5\u4e0b\u662f\u4e00\u4e9b\u9875\u9762\u5c55\u793a\r\n\r\n\u529f\u80fd\u5217\u8868\r\n![\u529f\u80fd\u5217\u8868](https://cdn.jsdelivr.net/gh/xupingmao/xnote-doc/images/v2.9.6/app_index.png)\r\n\r\n\u7b14\u8bb0\u672c\r\n![\u7b14\u8bb0](https://cdn.jsdelivr.net/gh/xupingmao/xnote-doc/images/v2.9.7/books.png)\r\n\r\nmarkdown\u9875\u9762\r\n![markdown](https://cdn.jsdelivr.net/gh/xupingmao/xnote-doc/images/v2.9.6/markdown.png)\r\n\r\n-----\r\n## \u9879\u76ee\u5730\u5740\r\n\r\n- [github](https://github.com/xupingmao/xnote)\r\n- [gitee](https://gitee.com/xupingmao/xnote)\r\n\r\n\u5982\u679c\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u95ee\u9898\uff0c\u6b22\u8fce\u5728\u9879\u76ee\u4e3b\u9875\u63d0issue\u6216\u8005\u8bc4\u8bba\u3002\r\n\r\n## \u5b89\u88c5&\u8fd0\u884c\r\n\r\n### \u7269\u7406\u673a\u5b89\u88c5\r\n\r\n#### \u5b89\u88c5\u4f9d\u8d56\u73af\u5883\r\n\r\n- Python >= 3.6\r\n- \u5b89\u88c5\u4f9d\u8d56\u7684\u8f6f\u4ef6\u5305\r\n    - \u6700\u5c0f\u5316\u5b89\u88c5(\u4f7f\u7528sqlite) `python3 -m pip install -r config/requirements.min.txt`\r\n    - Mac/Linux\u6267\u884c ```python -m pip install -r config/requirements.txt```\r\n    - Windows\u6267\u884c `python -m pip install -r config/requirements.win.txt`\r\n\r\n#### \u914d\u7f6e\u548c\u542f\u52a8\r\n\r\n\u9ed8\u8ba4\u7684\u914d\u7f6e\u6587\u4ef6\u4f4d\u4e8e`config/boot/boot.default.properties`\uff0c\u5177\u4f53\u7684\u529f\u80fd\u53c2\u8003\u914d\u7f6e\u7684\u6ce8\u91ca\r\n\r\n```sh\r\n# \u5207\u6362\u5230xnote\u76ee\u5f55\r\n> cd xnote\r\n# \u590d\u5236\u914d\u7f6e\u5e76\u4e14\u8fdb\u884c\u81ea\u5b9a\u4e49\u914d\u7f6e\r\n> cp config/boot/boot.min.properties boot.local.properties\r\n# \u542f\u52a8\r\n> python3 app.py --config boot.local.properties\r\n```\r\n\r\n\u5982\u679c\u4e0d\u4fee\u6539\u7aef\u53e3\u53f7\uff0c\u542f\u52a8\u4e4b\u540e\u5728\u6d4f\u89c8\u5668\u6253\u5f00 http://localhost:1234/ \u5c31\u53ef\u4ee5\u4f7f\u7528\u4e86\uff0c\u521d\u59cb\u5316\u7684\u7ba1\u7406\u5458\u8d26\u53f7\u662fadmin\uff0c\u9ed8\u8ba4\u5bc6\u7801\u662f 123456\r\n\r\n### Docker-compose\r\n\r\n1. \u521b\u5efa\u6301\u4e45\u5316\u6570\u636e\u76ee\u5f55 ```mkdir data```\r\n2. \u521b\u5efa\u914d\u7f6e\u6587\u4ef6 `cp ./config/boot/boot.default.properties ./boot.local.properties`\r\n3. \u6839\u636e\u81ea\u5df1\u7684\u9700\u6c42\u4fee\u6539 `boot.local.properties`\r\n4. \u6267\u884c\u547d\u4ee4 ```docker-compose up -d```\r\n\r\n### \u5728\u4e91\u670d\u52a1\u5e73\u53f0\u90e8\u7f72\r\n\r\n- \u65b0\u6d6aSAE TODO\r\n- [CentOS - \u767e\u5ea6BAE](https://blog.csdn.net/u011320646/article/details/126334377) \r\n\r\n## \u4e3b\u8981\u529f\u80fd\r\n\r\n### \u7b14\u8bb0\u7ba1\u7406\r\n- \u652f\u6301\u591a\u79cd\u683c\u5f0f\uff1amarkdown/\u8868\u683c/\u76f8\u518c/\u5217\u8868\r\n- \u7ec4\u7ec7\u529f\u80fd\uff1a\u901a\u8fc7\u7b14\u8bb0\u672c/\u6807\u7b7e/\u7f6e\u9876/\u5173\u8054\u7b14\u8bb0\u6765\u7ba1\u7406\u6587\u6863\r\n- \u5206\u4eab\u529f\u80fd\uff1a\u5728\u7b14\u8bb0\u7684\u8be6\u60c5\u9875\u9762\uff0c\u70b9\u51fb\u3010\u66f4\u591a\u3011\u4e0b\u62c9\u5217\u8868\u91cc\u9762\u7684\u5206\u4eab\uff0c\u53ef\u4ee5\u5c06\u6587\u7ae0\u5206\u4eab\u7ed9\u672a\u767b\u5f55\u7528\u6237\u67e5\u770b\r\n- \u4f18\u5148\u7ea7\u7ba1\u7406\uff1a\u7f6e\u9876\u3001\u5f52\u6863\u529f\u80fd\r\n- \u5907\u4efd\u529f\u80fd\uff1a\u4fdd\u5b58\u6bcf\u6b21\u7b14\u8bb0\u7684\u4fee\u6539\u5386\u53f2\r\n- \u641c\u7d22\u529f\u80fd\uff1a\u652f\u6301\u6574\u4e2a\u77e5\u8bc6\u5e93\u641c\u7d22\u548c\u9879\u76ee\u5185\u641c\u7d22\r\n- \u8bc4\u8bba\u529f\u80fd\uff1a\u652f\u6301\u767b\u5f55\u7528\u6237\u7684\u8bc4\u8bba\r\n- \u8bbf\u95ee\u7edf\u8ba1\uff1a\u6700\u8fd1\u3001\u5e38\u7528\u7684\u8bbf\u95ee\u7edf\u8ba1\r\n- \u5176\u4ed6\u6587\u6863\u5de5\u5177\r\n\r\n### \u6587\u4ef6\u7ba1\u7406\r\n- \u591a\u79cd\u89c6\u56fe\uff1a\u5217\u8868\u3001\u7f51\u683c\r\n- \u6587\u4ef6\u64cd\u4f5c\uff1a\u6587\u4ef6\u4e0a\u4f20\u3001\u4e0b\u8f7d\u3001\u65b0\u5efa\u3001\u5220\u9664\u3001\u91cd\u547d\u540d\u3001\u79fb\u52a8\u7b49\u64cd\u4f5c\r\n- \u6587\u4ef6\u5de5\u5177\uff1a\u4ee3\u7801\u7f16\u8f91\u5668\u3001\u6587\u672c\u9605\u8bfb\u5668\u3001\u4e8c\u8fdb\u5236\u67e5\u770b\u5668\u3001\u6587\u4ef6\u5185\u5bb9\u641c\u7d22\u7b49\u7b49\r\n- \u5927\u6587\u4ef6\u652f\u6301\uff1a\u6587\u4ef6\u4e0b\u8f7d\u652f\u6301\u65ad\u70b9\u7eed\u4f20\uff0c\u652f\u6301\u8d85\u5927\u6587\u4ef6\u4e0a\u4f20\uff08\u6d4b\u8bd5\u8fc71G\u6587\u4ef6\uff09\r\n- \u6269\u5c55\uff1a\u652f\u6301\u5f00\u53d1\u63d2\u4ef6\u6269\u5c55\r\n\r\n### \u5de5\u5177\u7bb1\r\n- Python\u6587\u6863(pydoc)\r\n- \u6587\u672c\u5904\u7406(\u6587\u672c\u5bf9\u6bd4\u3001\u4ee3\u7801\u751f\u6210\u3001\u5bc6\u7801\u751f\u6210)\r\n- \u7f16\u89e3\u7801\u5de5\u5177(base64\u3001md5\u3001\u8fdb\u5236\u8f6c\u6362\u3001\u7b49\u7b49)\r\n- \u6761\u5f62\u7801\u3001\u4e8c\u7ef4\u7801\u751f\u6210\u5668\r\n- \u56fe\u50cf\u5904\u7406\uff08\u5408\u5e76\u3001\u62c6\u5206\u3001\u7070\u5ea6\u8f6c\u6362\uff09\r\n- \u63d0\u4f9b\u6269\u5c55\u80fd\u529b\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u81ea\u5df1\u5f00\u53d1\u63d2\u4ef6\r\n\r\n## \u7cfb\u7edf\u6269\u5c55\r\n\r\n### \u63d2\u4ef6\u673a\u5236\r\n\r\n\u7531\u4e8e\u6bcf\u4e2a\u4eba\u7684\u9700\u6c42\u4e0d\u540c\uff0c\u5355\u4e00\u7cfb\u7edf\u5f88\u96be\u6ee1\u8db3\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u9700\u8981\u7f16\u5199\u63d2\u4ef6\u6765\u6269\u5c55\u7cfb\u7edf\u7684\u529f\u80fd\u3002\u5177\u4f53\u53ef\u4ee5\u53c2\u8003\u6587\u6863 [\u63d2\u4ef6\u6269\u5c55](./docs/plugins.md)\u3002\r\n\r\n\u5177\u4f53\u7279\u6027\u5982\u4e0b\r\n\r\n- \u63d2\u4ef6\u4e2d\u53ef\u4ee5\u76d1\u542c\u7cfb\u7edf\u6d88\u606f\uff0c\u5305\u62ec\u7b14\u8bb0\u3001\u63d0\u9192\u3001\u6587\u4ef6\u3001\u65f6\u95f4\u3001\u7cfb\u7edf\u4e94\u79cd\u7c7b\u578b\u7684\u6d88\u606f\r\n- \u63d2\u4ef6\u53ef\u4ee5\u901a\u8fc7`category`\u5c5e\u6027\u8bbe\u7f6e\u5206\u7c7b\uff0c\u663e\u793a\u5728\u7b14\u8bb0\u3001\u6587\u4ef6\u3001\u7cfb\u7edf\u7b49\u529f\u80fd\u7684\u9009\u9879\u5165\u53e3\u4e2d\r\n- \u53ef\u4ee5\u901a\u8fc7\u6a21\u677f\u521b\u5efa\u63d2\u4ef6\r\n\r\n### \u4e8c\u6b21\u5f00\u53d1\r\n\r\n- xnote\u73b0\u5728\u5df2\u7ecf\u6253\u5305\u4e0a\u4f20\u5230pypi[xnote-web](https://pypi.org/project/xnote-web/), \u8fd9\u6837\u53ef\u4ee5\u901a\u8fc7\u6a21\u5757\u5316\u7684\u65b9\u5f0f\u8fdb\u884c\u4e8c\u6b21\u5f00\u53d1\r\n\r\n\r\n## \u76f8\u5173\u6587\u6863\r\n- [\u66f4\u65b0\u65e5\u5fd7](./docs/changelog.md)\r\n- [\u7cfb\u7edf\u67b6\u6784](./docs/architecture.md)\r\n- [\u7f16\u7801\u89c4\u8303](./docs/code_style.md)\r\n- [\u63d2\u4ef6\u6269\u5c55](./docs/plugins.md)\r\n- [\u641c\u7d22\u6269\u5c55](./docs/search_extension.md)\r\n- [\u6570\u636e\u5e93\u8fc1\u79fb](./docs/db_migrate.md)\r\n\r\n## \u534f\u8bae\r\n\r\n- GPL\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "xnote-web\u6846\u67b6",
    "version": "2025.8.31",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "61d6dbdda400f99088ab53ba639139a49483b275a50f26827645a993ccae85e4",
                "md5": "3a19c1725d4c2ba51501c0c529bd4bc1",
                "sha256": "e6a88fca10ab9e52450e8ac9970aedc63878971e32f0ad8a80ad6e811ecc9a91"
            },
            "downloads": -1,
            "filename": "xnote_web-2025.8.31.tar.gz",
            "has_sig": false,
            "md5_digest": "3a19c1725d4c2ba51501c0c529bd4bc1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 7040126,
            "upload_time": "2025-08-31T08:52:36",
            "upload_time_iso_8601": "2025-08-31T08:52:36.788025Z",
            "url": "https://files.pythonhosted.org/packages/61/d6/dbdda400f99088ab53ba639139a49483b275a50f26827645a993ccae85e4/xnote_web-2025.8.31.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-31 08:52:36",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "xnote-web"
}
        
Elapsed time: 0.59310s