# Верстак **Верстак** — local-first рабочий vault. Всё организовано вокруг **дел**, а не задач. Дело может быть: клиентом, проектом, набором документов, рецептом, архивом, разовой работой. Внутри дела: вложенные папки, Markdown-заметки, файлы, действия (URL/файл/папка/команда), журнал работ, история активности. ## Стек | Слой | Технология | |------|------------| | GUI | Wails v2 + Svelte 4 | | CLI/TUI | Go (bubbletea-like) | | Backend | Go | | Хранилище | SQLite (индекс) + файловая система (vault) | | Плагины | Lua | | Синхронизация | HTTP API (опциональный сервер) | ## Архитектура ``` ┌────────────────────┐ │ GUI (Wails v2) │ └─────────┬──────────┘ │ ┌─────────▼────────┐ ┌─────────────┐ │ Core Library │◄──│ CLI Commands │ └─────────┬────────┘ └─────────────┘ │ ┌─────────▼──────────┐ │ Local Vault+SQLite │ └─────────┬──────────┘ │ ┌─────────▼──────────┐ │ Sync Client │ └─────────┬──────────┘ │ ┌─────────▼──────────┐ │ Sync Server │ └────────────────────┘ ``` ## Быстрый старт ### Требования - Go 1.25+ - Node.js 20+ - libwebkit2gtk-4.1-dev, libgtk-3-dev и другие Wails-зависимости (см. [wails.io/docs/desktop/linux](https://wails.io/docs/desktop/linux)) - npm ### Сборка ```bash # Всё сразу (GUI + сервер) ./build.sh # Или по отдельности ./scripts/build.sh gui # только GUI ./scripts/build.sh server # только сервер ``` Бинарники попадают в `build/`: - `verstak-gui-linux-amd64` — GUI-приложение - `verstak-server-linux-amd64` — опциональный сервер синхронизации ### Запуск ```bash # GUI (после сборки) ./build/verstak-gui-linux-amd64 # Сервер (после сборки) ./build/verstak-server-linux-amd64 --help # CLI go run ./cmd/verstak/ --help ``` ## Структура проекта ``` . ├── cmd/ # Точки входа │ ├── verstak/ # CLI/TUI │ ├── verstak-gui/ # Wails GUI │ └── verstak-server/ # Sync server ├── internal/ │ ├── core/ # Бизнес-логика │ │ ├── actions/ # Действия (URL, папка, команда) │ │ ├── config/ # Конфигурация │ │ ├── files/ # Файлы и импорт │ │ ├── i18n/ # Интернационализация (Go) │ │ ├── nodes/ # Дела/узлы дерева │ │ ├── plugins/ # Lua-плагины │ │ ├── search/ # Поиск │ │ ├── storage/ # SQLite + миграции │ │ ├── sync/ # Синхронизация │ │ ├── templates/ # Шаблоны дел │ │ ├── vault/ # Vault layout │ │ └── worklog/ # Журнал работ │ └── gui/ # Wails bridge (embedded HTML) ├── frontend/ # Svelte-приложение │ └── src/ │ ├── lib/ │ │ └── i18n/ # Локали (JS) │ └── ...svelte # Компоненты ├── migrations/ # SQL-миграции ├── docs/ # Документация ├── build.sh # Скрипт полной сборки └── scripts/ # Вспомогательные скрипты ``` ## CLI команды ```bash go run ./cmd/verstak/ sync # Синхронизация с сервером go run ./cmd/verstak/ sync configure # Настройка сервера go run ./cmd/verstak/ sync status # Статус синхронизации ``` ## Vault layout Данные хранятся в локальной папке (vault). Структура на диске: ``` vault/ .verstak/ # Служебные данные (БД, кеш, бэкапы) Проекты/ # Пользовательские папки-дела Клиенты/ Рабочие/ Archive/ ``` Внутри папок-дел: `Notes/`, `Files/`, `Documents/`, `Overview.md`. Vault открывается в любом файловом менеджере без специальных инструментов. ## Документация | Раздел | Описание | |--------|----------| | [Описание продукта](docs/01_Product_Spec.md) | Аудитория, сценарии, фичи | | [Архитектура](docs/02_Architecture.md) | Компоненты, плагины, sync | | [Модель данных](docs/03_Data_Model_Storage.md) | SQLite, vault, файлы | | [Синхронизация](docs/04_Sync_Backup_Activity.md) | Sync, backup, activity | | [UI/UX](docs/05_UI_UX.md) | Экраны GUI/TUI | | [Плагины](docs/09_Extensibility.md) | Lua-плагины, шаблоны | | [Сервер синхронизации](docs/10_Sync_Server_Guide.md) | Установка и настройка сервера | | [Vault layout](docs/VAULT_LAYOUT.md) | Структура папок на диске | | [План](docs/PLAN.md) | Дорожная карта | | [Шаблоны](docs/TEMPLATES.md) | Шаблоны дел | ## Лицензия MIT