DOCUMENTATION (shift from personal to universal product): - README.md: rewritten with 'one product, different doors' framing, universal entities table, audience segments - 01_Product_Spec.md: removed personal references (sshkeeper, Godot, DokuWiki, servers), added audience segments (freelancer, repairmaster, developer, maker, consultant), universal scenarios - 02_Architecture.md: added 'Plugins (Extensibility)' section with calendar/kanban/importer/template examples - 03_Data_Model_Storage.md: added section 6 on plugin extensibility (node_meta, type registry, SQL migrations per plugin) - 09_Extensibility.md (NEW): full plugin architecture — Lua runtime, plugin.json, hooks, sandbox, templates, registry - PLAN.md: added step 16 (plugins), updated status table - 00_README.md: rewritten product index with plugin principle CODE — STEP 4 (Files): - migration 002: files table (id, node_id, filename, path, storage_mode, size, sha256, mime, ...) - FileService: AddExternal, CopyIntoVault, Get, ListByNode, MarkMissing, DeleteToTrash, Open (xdg-open) - file_test.go: 5 tests (external, copy-vault, list-node, delete-trash, MIME guess) CODE — STEP 5 (Notes): - migration 003: notes table (node_id PK, file_id, format, original_format, encrypted) - NoteService: Create (node+file+link), Read, Save (with backup to .verstak/history/), Delete, Load - note_test.go: 3 tests (create-read, save-backup, delete) CODE — STEP 6 (GUI): - cmd/verstak-gui/main.go: launches GUI server, opens browser - internal/gui/server.go: HTTP API for nodes/notes/files/search - internal/gui/index.html.go: full inline SPA frontend (dark theme, sidebar tree, cards grid, note editor, search, create modals) - Navigation: sidebar tree → click node → detail view with children + files cards → tab switch (overview/notes/files) → create node/note via modal → edit note in fullscreen textarea → save (with history backup) Acceptance: go build ./... pass, go build -tags gui ./cmd/verstak-gui pass, go test ./... pass (20+ tests). GUI serves on random port, opens browser. API returns JSON for all resource types. |
||
|---|---|---|
| cmd | ||
| docs | ||
| internal | ||
| migrations | ||
| .gitignore | ||
| README.md | ||
| go.mod | ||
| go.sum | ||
README.md
Верстак
Верстак — локальная программа, где по каждому клиенту или проекту лежат все его файлы, заметки, документы, ссылки, действия и история работ.
Это не замечатель, не CRM, не таск-трекер. Нишевая аудитория — люди, у которых работа организована через дела, а не через задачи:
дело → файлы → заметки → документы → действия → история → вернуться через месяц
Для кого
Один продукт — разные входные двери:
| Кто | Как видит Верстак |
|---|---|
| Фрилансер / дизайнер | клиентские проекты, файлы, правки, история работ |
| Мастер по ПК | клиенты, устройства, серийники, фото, журнал |
| Разработчик | локальный workspace: заметки, репы, команды, файлы |
| Писатель / мейкер | мастерская проектов: материалы, заметки, версии, история |
Универсальные сущности
Базовая модель предельно проста — плагины добавляют функционал:
- Дело — контекст для всего остального
- Заметка — Markdown внутри vault
- Файл / Документ — любой файл, привязанный к делу
- Действие — кнопка запуска: URL, файл, папка, команда
- Журнал — записи о затраченном времени
Плагины (шаблоны дел, календарь, канбан, импортёры) расширяют эти сущности без перекомпиляции программы.
Стек
Go + SQLite + Lua (плагины) + Wails + Bubble Tea.
Документация
- Описание продукта: docs/01_Product_Spec.md
- Архитектура: docs/02_Architecture.md
- Плагины: docs/09_Extensibility.md
- План разработки: docs/PLAN.md