# MarkBase

**Momentry Display Engine** - Markdown渲染與檔案樹管理系統

## 功能特色

- Markdown渲染（支援表格、footnote、tasklist）
-檔案樹管理（SQLite持久化）
- REST API（18+路由）
- macOS音訊控制（音訊裝置切換、音量控制）
-多種顯示模式（tree, list, grid_sm, grid_lg）

##安裝

###必要條件

- Rust 1.92+ 
- macOS（音訊功能需 macOS）
- SwitchAudioSource（音訊裝置切換）

```bash
#安裝 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

#安裝 SwitchAudioSource（macOS）
brew install switchaudio-source
````

###建構

```bash
cargo build
````

##使用

###啟動伺服器

```bash
cargo run -- display                #預設 port 11438
cargo run -- display -p8080         #自訂 port
cargo run -- display README.md      #顯示指定檔案
````

###渲染 Markdown

```bash
cargo run -- render README.md       #輸出到 stdout
cargo run -- render README.md -o output.html
````

##測試

```bash
cargo test                          #執行所有測試
cargo test test_insert              #執行特定測試
````

## File Tree功能

### REST API

|路由 |方法 |功能 |
|------|------|------|
| `/api/v2/tree/:user_id` | GET | 取得檔案樹 |
| `/api/v2/tree/:user_id/node` | POST | 建立節點 |
| `/api/v2/tree/:user_id/node/:node_id` | PUT/DELETE | 更新/刪除節點 |
| `/api/v2/tree/:user_id/node/:node_id/move` | PUT | 移動節點 |
| `/api/v2/tree/:user_id/node/:node_id/alias` | PATCH | 更新別名 |

###顯示模式

- `tree` - 樹狀顯示
- `list` - 列表顯示
- `grid_sm` - 小格狀顯示
- `grid_lg` - 大格狀顯示

###範例

```bash
curl http://localhost:11438/api/v2/tree/demo?mode=tree
curl http://localhost:11438/api/v2/tree/demo?mode=list
````

## Demo資料

- `data/users/demo.sqlite` - 50節點範例資料
- `data/cache/` -範例檔案

##開發

見 `AGENTS.md`詳細開發指南。

## CI/CD

使用 Gitea Actions：https://gitea.momentry.ddns.net

## License

MIT