Skip to content
/ quake Public

Quake is a knowledge management meta-framework for geeks. Use meta-data + Transflow to CRUD data, Git + markdown to management content, Web Component for frontend-custom. Quake 是面向极客的知识管理元框架。

License

Notifications You must be signed in to change notification settings

phodal/quake

Repository files navigation

Quake

Build Coverage Status GitHub release (latest by date)

A meta knowledge management tool for geek.

Quake 是面向极客的知识管理元框架,它可以:

  • 自由的文本内容管理。Todo 清单、文章管理、书评、笔记等。
  • 构建知识网络体系。定制化 markdown 链接
  • 抓住稍纵即逝的灵感。支持快速启动(CLI、TUI)与全局搜索
  • 自由的呈现画布。DSL 与自由画板

Introduction

Architecture:

Architecture

Screenshots:

Screenshots

Web Samples:

Web Samples

Design principle

我使用了不同的工具来管理知识,Microsoft To Do 管理 idea、Phodit + Phodal.com 发布文章、Apple Notes 记录笔记等等,知识被分散在各个工具中。不利于我进行洞见,寻找灵感,与此同时,还缺乏书写和记录的方式。

我需要一个新的工具来融合到我的知识体系里,它应该是:

  • 开源的。可以自由扩展。
  • 分布式 + 本地化的。可以离线使用,方便于出差旅途中使用。
  • 版本化的。可以自由查看变更历史。
  • 开放的。可以自由与其它工具组合。如 Vim、VSCode 等。
  • 易于扩展。可以结合习惯用的工具。诸如于,基于 DSL 的编辑-发布分离的类 Web 模式,用于展示。如 MxGraph、Mermaid、Ledge Framework 等

愿景示例

  1. 在项目中添加自定义的 Entry,进行对应的 TUI 管理。
  2. 通过 Web Components,自定义 Entry 的展示。
  3. 通过自定义的编辑器,或者 Web 编辑器来对内容编辑。

Usage

CLI

  1. init in project dirs
quake init

.quake.yml for config, entries-define.yaml for define.

  1. add entry by type
quake cmd -i "todo.add: time support"
  1. edit entry by index
quake cmd -i "todo.edit(1)"
  1. list entry by type
quake cmd -i "todo.list"
  1. sync list
quake cmd -i "todo.sync"
  1. concept [tbd]

  2. network [tbd]

Web

  1. setup serach engine
brew install meilisearch

index

quake cmd -i "quake.feed"
  1. config .quake.yaml

  2. run server

quake server
  1. visit: https://localhost:8000/

GUI (TBD)

TBD

Query Syntax

more in: quake.pest

action_decl = {
    object ~ "." ~ action ~ parameters? ~ ":"? ~ " "* ~ text?
}

parameters = {
    "(" ~ parameter ~ ("," ~ parameter)* ~ ")"
}

Markdown Extends syntax [TBD]

  1. tag: #{tag}
  2. custom function: #{$block}, #{$toc}, #{$link}, #{$file = Hello.pptx}

Quake Output

examples output:

├── entries-define.yaml         # define all type data
├── web
│   ├── index.html
│   └── js
├── yarn.lock
└── yiki                        # data type
    ├── 0001-hello-world.md     # a `yiki` file
    ├── entries.csv             # tables for all `yiki`
    └── entry-node-info.yaml    # `yiki` node info

Development

Languages: Rust, TypeScript (Node.js 16)

Tech stacks:

  • Search Engine: MeiliSearch
  • Frontend:
    • MV* Frameworks: Stencil.js, TBD
    • Charts: D3.js, MxGraph, Echarts
    • Editor: Quill?
  • Database: Git + CSV + Yaml
  • Web API: Rocket.rs
  • Analysis API: Jieba.rs
  • TUI: tbd
  • GUI: tbd

Setup

  1. install quake from rust
  2. install meilisearch

Roadmap

MVP

  • 导入
    • Django/Mezzanine
    • Apple Notes
    • Microsoft Todo
    • Microsoft Onenote
  • 自定义条目类型
    • CRUD
    • dynamic update entries-define
  • CLI 交互与列表呈现
  • MVP API 设计
    • Web Server
    • GraphQL
  • 基于 Git 的数据存储
  • Search anywhere
    • search frameworks
    • auto suggest

1.0: Knowledge map

  • 嵌入式脚本语言
  • 知识空间
    • 自定义项目视图
    • 年份视图
  • 知识可视化
    • Mindmap from Ledge Framework?
    • Mindmap connect to Entry (${connect.todo("0001", "${title}"})
  • Dashboard
  • Editor (TBD)
    • markdown editor

License

@ 2021 This code is distributed under the MIT license. See LICENSE in this directory.

About

Quake is a knowledge management meta-framework for geeks. Use meta-data + Transflow to CRUD data, Git + markdown to management content, Web Component for frontend-custom. Quake 是面向极客的知识管理元框架。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published