本项目系统是一款面向个人的轻量级笔记系统,提供多种维度的数据管理功能,致力于把个人从信息过载中解放出来。
它主要有如下特性
-
拥有丰富的数据管理能力,支持多种笔记格式以及文件管理功能
-
默认提供了一些常用的工具,同时提供扩展能力,用户可以编写各种插件满足自己的需求
-
跨平台,支持Windows、Mac、Linux三大平台,可以在云服务上部署,也可以在本地运行
-
100%自由的数据控制权,可以运行在多种数据库环境中
-
支持小规模的多用户,面向多用户的商业场景使用请谨慎
目前xnote定位是一个面向个人使用的小型笔记产品,不会重点投入以下方向
-
大规模的多用户支持
-
多用户协作功能
如果你热爱技术爱折腾、需要多元的数据处理能力、希望完全掌控自己的文档数据,本产品将会是一个不错的尝试,欢迎试用反馈。另外,搜索公众号Linux就该这样学后台回复“知识库”,获取一份惊喜礼包。
系统架构
层次架构
程序目录结构
|-- app.py # 程序入口
|-- core/
| |-- xconfig.py # 程序配置
| |-- xmanager.py # handlers管理器,负责模块加载,注册URL,以及定时任务触发
| |-- xauth.py # 权限控制
| |-- xtables.py # 数据库表结构
| |-- xtemplate.py # view层的渲染接口
| \-- autoreload.py # 脚本变更热加载,主要用于调试,生产环境可以关闭
|
|-- xutils/ # 工具类集合
|-- lib/ # 第三方类库,程序启动时添加到sys.path中
|-- config/ # 系统配置目录
| |-- file/ # 文件配置
| |-- lang/ # 多语言配置
| \-- template/ # 模板配置
|
|-- handlers/ # http请求处理器目录,功能实现大部分在这里
| |-- api/ # 系统接口,返回JSON格式,供页面、定时任务、搜索调用
| |-- system/ # 系统功能目录
| |-- note/ # 笔记功能目录
| |-- fs/ # 文件功能目录
| |-- tools/ # 工具目录
| |-- plugins/ # 插件目录
| \-- ... # 其他目录
|-- static/ # 静态文件
\-- tests/ # 测试用例
数据区目录结构
|-- files/ # 上传的文件
| \-- user01 # 用户目录,以用户名作为目录名,支持多个
| |-- upload # 上传文件目录,上传文件以日期作为下级目录,比如 2019/01/
| |-- gallery # 相册文件
|
|-- backup/ # 备份目录
|-- scripts/ # 脚本目录
|-- storage/ # 应用存储目录
|-- db/ # 数据库目录
|-- log/ # 日志目录
|-- tmp/ # 临时文件
\-- trash/ # 回收站
开发框架/软件库
具体版本见requirements.txt
-
webpy(修改版,xnote内置)
-
tornado template(修改版,xnote内置)
-
sqlite3 (Python自带文件型数据库)
-
wsgidav 支持webdav的功能,用于挂载网络磁盘
-
psutil(可选,采集系统运行数据)
-
comtypes(可选,用于调用微软语音API)
前端依赖
-
jquery JS基础库
-
layer web弹层组件
-
marked markdown解析器
-
codemirror 代码编辑器
-
jexcel web表格
-
font-awesome 图标库
-
art-template 模板引擎
-
vue2 MVVM框架
-
qrcode 二维码生成器
-
csv.js 解析csv文件
-
jsdiff 文本对比
新模块开发
在handlers目录下添加python程序,比如test.py
class MyHandler:
def GET(self):
return "success"
class Handler2:
def GET(self):
return "handler2"
# URL路由规则,支持多个配置
xurls = (
r"/test", MyHandler,
r"/handler2", Handler2
)
# 启动xnote,访问浏览器localhost:1234/test就会看到success
以下是一些页面展示
安装&运行
安装依赖环境
-
安装python(建议Python3,Python2.7版本不再维护)
-
安装依赖的软件包
-
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
,具体的功能参考配置的注释
# 指定自定义的配置文件 python3 app.py --config config/boot/自定义名称.properties
如果不修改端口号,启动之后在浏览器打开 http://localhost:1234/ 就可以使用了,初始化的管理员账号是admin,默认密码是 123456
主要功能
笔记管理
-
支持多种格式:markdown/表格/相册/列表
-
组织功能:通过笔记本/标签/优先级来管理文档
-
分享功能:在笔记的详情页面,点击【更多】下拉列表里面的分享,可以将文章分享给未登录用户查看
-
优先级管理:置顶、归档功能
-
备份功能:笔记的修改历史
-
搜索功能:支持整个知识库搜索和项目内搜索
-
评论功能:支持登录用户的评论
-
访问统计:最近、常用的访问统计
-
其他文档工具
文件管理
-
多种视图:列表、网格
-
文件操作:文件上传、下载、新建、删除、重命名、移动等操作
-
文件工具:代码编辑器、文本阅读器、二进制查看器、文件内容搜索等等
-
大文件支持:文件下载支持断点续传,支持超大文件上传(测试过1G文件)
-
扩展:支持开发插件扩展
工具箱
-
Python文档(pydoc)
-
文本处理(文本对比、代码生成、密码生成)
-
编解码工具(base64、md5、进制转换、等等)
-
条形码、二维码生成器
-
图像处理(合并、拆分、灰度转换)
-
提供扩展能力,开发者可以自己开发插件
系统扩展
由于每个人的需求不同,单一系统很难满足,开发者可以根据自己需要编写插件来扩展系统的功能。具体可以参考文档 插件扩展。
具体特性如下
-
插件中可以监听系统消息,包括笔记、提醒、文件、时间、系统五种类型的消息
-
插件可以通过
category
属性设置分类,显示在笔记、文件、系统等功能的选项入口中 -
可以通过模板创建插件
最后,欢迎大家扫码关注公众号:
公众号后台回复 77 或者 开源 有惊喜礼包!
技术栈:Java后端,纯血鸿蒙开发,Android(Java,kotlin,Flutter,uniapp),小程序,Python。
纯血鸿蒙越来越火,鸿蒙开发者越来越多,招聘需求也越来越多,创建了一个鸿蒙应用开发 知识星球社群:
加入鸿蒙开发--->>:如何快速学习纯血鸿蒙开发
简单说下这个星球能给大家提供什么:
1、不断分享如何开发鸿蒙应用,实战项目,上架应用。
2、分享鸿蒙开发的入门开发方法、项目经验。
3、探讨未来关于鸿蒙的机遇和发展方向,共同成长。
4、帮助大家解决鸿蒙开发中遇到的问题。
星球福利:
1、加入星球,就送入门到实战的已有课程。
2、邀请你加入会员交流群。
3、支持零基础一对一辅导。
![图片](https://img-blog.csdnimg.cn/img_convert/4a7cd58514e76d6b02ac582b1200c5b4.png)
![图片](https://img-blog.csdnimg.cn/img_convert/822c4e39c3a6f37c0d29ea7be15d80b0.jpeg)
加入交流群获取源码
![图片](https://img-blog.csdnimg.cn/img_convert/519bc188665bdb99987b9e2b2365c918.jpeg)
关注一下,扫描添加好友邀你进群,加我时注明【开源】
往日文章: