服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

[开源]一款面向个人的轻量级笔记系统,个人安全、可扩展的知识库

日期: 来源:一飞开源收集编辑:

一飞开源,介绍创意、新奇、有趣、实用的免费开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

致力于打造面向个人的安全、可扩展的知识库,支持笔记、待办、文件管理等多种功能,帮助你管好每一份数据。

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

  • 拥有丰富的数据管理能力,支持多种笔记格式以及文件管理功能

  • 默认提供了一些常用的工具,同时提供扩展能力,用户可以编写各种插件满足自己的需求

  • 跨平台,支持Windows、Mac、Linux三大平台,可以在云服务上部署,也可以在本地运行

  • 100%自由的数据控制权,可以运行在多种数据库环境中

  • 支持小规模的多用户,面向多用户的商业场景使用请谨慎

目前xnote定位是一个面向个人使用的小型笔记产品,不会重点投入以下方向

  • 大规模的多用户支持

  • 多用户协作功能

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

二、开源协议

使用GPL-3.0开源协议

三、界面展示

四、功能概述

主要功能

笔记管理

  • 支持多种格式:markdown/表格/相册/列表

  • 组织功能:通过笔记本/标签/优先级来管理文档

  • 分享功能:在笔记的详情页面,点击【更多】下拉列表里面的分享,可以将文章分享给未登录用户查看

  • 优先级管理:置顶、归档功能

  • 备份功能:笔记的修改历史

  • 搜索功能:支持整个知识库搜索和项目内搜索

  • 评论功能:支持登录用户的评论

  • 访问统计:最近、常用的访问统计

  • 其他文档工具

文件管理

  • 多种视图:列表、网格

  • 文件操作:文件上传、下载、新建、删除、重命名、移动等操作

  • 文件工具:代码编辑器、文本阅读器、二进制查看器、文件内容搜索等等

  • 大文件支持:文件下载支持断点续传,支持超大文件上传(测试过1G文件)

  • 扩展:支持开发插件扩展

工具箱

  • Python文档(pydoc)

  • 文本处理(文本对比、代码生成、密码生成)

  • 编解码工具(base64、md5、进制转换、等等)

  • 条形码、二维码生成器

  • 图像处理(合并、拆分、灰度转换)

  • 提供扩展能力,开发者可以自己开发插件

系统扩展

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

具体特性如下

  • 插件中可以监听系统消息,包括笔记、提醒、文件、时间、系统五种类型的消息

  • 插件可以通过category属性设置分类,显示在笔记、文件、系统等功能的选项入口中

  • 可以通过模板创建插件

五、技术选型

系统架构

层次架构

程序目录结构

|-- 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.txtWindows执行 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

在云服务平台部署

  • 新浪SAE TODO

  • CentOS - 百度BAE

兼容性问题

如果安装老版本后更新启动失败参考 数据库迁移 或者查看Issue,如果问题还没解决可以提交新的Issue

六、源码地址

访问一飞开源:https://code.exmay.com/

相关阅读

  • 如何将CAD设置重置为默认值

  • 站长推荐:全套机械、建筑、室内、全屋定制、电气设计、平面设计系统学习课程,需要点我查看经常有一些粉丝会问周站长,我的CAD一些命令失效了,或者快捷键不是默认的快捷键了,或者
  • 基于AD Event日志检测NTDS凭据转储攻击

  • 01、简介在域环境里,域内用户hash存储在域控制器(ntds.dit)中的数据库文件中,ntds.dit文件是无法直接被复制的。在这种情况下,我们一般可以利用卷影复制服务(VSS)来实现ntds.di
  • 万字图文 | 你写的代码是如何跑起来的?

  • 大家好,我是飞哥!今天我们来思考一个简单的问题,一个程序是如何在 Linux 上执行起来的?我们就拿全宇宙最简单的 Hello World 程序来举例。#include <stdio.h>int main(){ prin
  • 视频便捷手势 交互设计探索

  • 一、前言视频播放器中承载着极其丰富的内容画面和播控功能,尤其是在寸土寸金的移动端视频播放器中,为使内容更沉浸消费,需尽可能克制界面中的功能元素/入口直接外露。基于此种
  • 如何写产品竞品分析报告

  • 前言写报告之前,我们要想清楚为什么要写这个报告?我们写竞品分析报告是为了通过分析挖掘潜在需求,找到产品的可改进点,得出有利于业务发展的建议。明确分析目的我们可以从以下
  • 文史知识 | 2023年第1期封面与目录

  • 《文史知识》2023年第1期封面 《文史知识》2023年第1期目录 特别关注 :礼迎新春5 春节话礼仪 萧 放12 殷周之际的禴祭漫议 李炳海18 礼文与仁心 李 旭诗文欣赏24 说
  • 我在Github上发现了一个好东西!

  • (给程序员零距离加星标,了解项目开发.)粉丝福利:小编会从今天留言中抽选幸运小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!作为一个天天都在CRUD的程序员,你有没有想过,数据
  • 如何快速做出产品MVP

  • 这是一篇面向独立开发者的文章,整理自12月我在生财有术海外工具小航海里的分享。两个月前,我在生财有术分享了《如何获得产品idea》。下一步,就是把idea变成MVP。今天我们聊聊,

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 政策解读/耕地用途管制及补充耕地项目问题解答

  • 为严格耕地用途管制,进一步加强补充耕地项目管理,严格新增耕地核实认定,2021年11月27日,自然资源部、农业农村部、国家林业和草原局联合印发了《关于严格耕地用途管制有关问题的