Доброго здравия автору и всей команде.
Есть идея доработки функционала, которая поднимет MyTetra на голову выше.
Если кратко, то это гибрид много-базовости и возможности коллективной работы.
Изложу своё видение реализации.
На данный момент БД программы хранится в папке data. Её конечно можно расшарить между
несколькими ПК с помощью сторонних утилит синхронизации, наподобие syncthing,
и если делать всё аккуратно, такой подход для нескольких человек даже заработает.
Но! Главная проблема - нет защиты от удаления. Один случайно изменил/удалил - это произошло у всех.
Доработка на авторизацию, систему прав и отдельные пароли на каждую ветку - это сложно и долго.
Предлагаю вот что.
БД разделить на 2 части: локальную (обычную) и shared.
В интерфейсе это будет выглядеть как две корневые папки (их имена можно обсудить)
- [другие]
- [моя локальная БД]
Далее.
Локальная БД будет как обычно находиться в папе data, а для [Другие] создадим рядом папку shared.
В интерфейсе необходимо добавить возможность копировать часть информации в категорию [Другие],
путём стандартного механизма экспорта веток. Каждая экспортированная ветка в категорию [Другие]
должна отображаться в интерфейсе как ветка, но по сути это будет как отдельная БД в папке shared.
И наоборот. Нужно добавить возможность из shared переносить информацию в локальную БД.
В чём идея?
У каждого запущена программа и есть локальная база. Локальную БД не трогаем и не синхронизируем,
а вместо этого синхронизируем между всеми папку shared, и когда кто-то шарит ветку/БД, её видят все.
Шареную ветку/БД можно скажем назвать именами сотрудников, или тематически, значения не имеет,
главное чтобы несколько человек не могли одновременно создать с одинаковым именем, тогда поломается
синхронизация. Возможно стоит добавить некий хеш, как у git, это уже тонкости реализации.
Далее, по желанию, если информация из шареной БД оказалась полезной, импортируем себе (drag-n-drop).
Потом допустим, заметку/ветку можно отредактировать и расшарить обратно (drag-n-drop).
Таким образом мы достигаем нескольких целей.
* локальная БД защищена от удаления/изменения.
* появляется возможность коллективной работы с помощью простых инструментов.
* сохраняется обратная совместимость (старые версии просто не будут видеть shared и всё)
Ну и для копирования информации предлагаю использовать тот же движок импорта/экспорта,
и для совместимости, и для простоты реализации.
По сути дела, движок сильно не меняется, просто теперь он смотрит в 2 папки: data + shared.
В папке shared будут подпапки с импортированными ветками, которые должны отображаться в интерфейсе,
и нужен некий механизм обновления, чтобы когда появляется что-то новое в папке, чтобы оно появлялось в программе.
Расположение папки shared можно задать в настройках, как и data.
Вот полный вид.
SHARED
*Xintrea
- ветка1
- ветка2
*Olga
- ветка1
- ветка2
*Sasha
- ветка1
- ветка2
LOCAL
*корень моей бд
- ветка1
- ветка2
Таким образом, путём не таких больших усилий, продукт получится в разы востребованнее и популярнее,
так как займёт полупрофессиональную нишу для малого бизнеса, со всеми вытекающими бонусами.
Что скажете?
Ссылка на сборки mytetra - на первой странице темы https://webhamster.ru/punbb/viewtopic.php?id=198