Недавно написал для себя приложение для структурирования информации, которое позволяет организовать её в древовидном виде. Иначе говоря, можно создавать множество деревьев. Так, на мой взгляд, можно структурировать в удобном виде что угодно. И не надо распихивать ничего по блокнотам или мучить обсидиан. Я долгое время структурировал данные через него, но реально дать структуру информации он не позволяет. Там есть текст, есть ссылки на другой текст, есть mermaid. Можно подсчитывать ассоциации и очаровываться линиями. И для кого-то этого хватает. Но структурировать данные от простого к подробностям, чтобы удобно объять всю информацию и работать с ней, и главное, чтобы было этот удобно визуализировать – такого там нет, да и нет подобных приложений.

Поскольку я практически не писал приложений под десктоп, но знаю немного Blazor, то решил написать на нем десктоп приложение. Да и redux подобный фреймворк Fluxor, на мой взгляд, гораздо удобнее того, что есть для десктопа. Вместе с UI фреймворком Radzen получилось вполне сносно. По правде говоря, его пришлось форкнуть и доработать ресайз панели.

Шаблон приложения для такого рода интеграции под десктоп это .NET MAUI Blazor Hybrid app. Там, по сути, вся отрисовка происходит в браузере с wasm. И это хорошо, браузер не плохо заточен под это дело. Единственный минус это отсутствие многопоточности. То есть подождать таску при этом сохраняя в бд sql lite асинхронно не получиться. Будут небольшие лаги. Которых, кстати, не заметно.

В перспективе можно вынести это в настоящий браузер, добавить авторизацию и использовать как сервис. Но функционала уже будет меньше и данные будут храниться уже не локально. В дальнейшем я планирую добавить шифрование для базы данных и бекапов.

Итак, о приложении.

Верхний узел дерева относительно дочернего узла описывает что-то общее, а дочерние уже подробные детали. Например, список дел: главная задача и подзадачи. Таким образом переходя от общего и раскрывая дочерние очень удобно оперировать информацией.

Сейчас я в этом приложении веду абсолютно всё: список дел, задачи по разработке, по тех. анализу, список покупок, TODO список по разработке самого приложения и т. д.

Особенно это приложение будет полезно авторам художественной литературы. Когда описываешь состояние мира: персонажи, взаимодействие, наброски и куча мелких деталей, например, кто где находится.

Ещё одна из основных фич это возможность ссылаться на данные, то есть лист (далее сущность) дерева может являться ссылкой на другой лист. Его так же можно раскрывать, и если ссылка ведет на родительский, то можно раскрывать дерево бесконечно, рекурсия в данном случае безопасна и ничего не сломает.

Для удобства представления деревьев они находятся в контейнерах, это области на экране, размер, которых можно изменять. Можно вкладывать в контейнер другой контейнер и таким образом создать любую визуализацию. Я обычно делю экран на 4 контейнера. Корневые контейнеры представляют из себя пространства, которые можно переключать. Экран может быть занят одним корневым контейнером.

Ещё удобная фича — это возможность работы с несколькими базами, которые так же на лету можно переключать. Их можно бэкапить и ресторить. В сам бекап входят так же файлы. Поэтому информацию можно удобно передать на другой компьютер.

Все данные организуются в виде баз, контейнеров и сущностей.

Сущности.

Сущность состоит из имени, контента, файлов и дочерних сущностей. Текстовые фалы и изображения можно просматривать в самом приложении. Сущность может быть ссылочной, то есть ссылаться на другую сущность. При этом появляется дополнительно поле для имени, в нем можно указать дополнительную информацию, например количество.

Сущности можно копировать, копировать по ссылке и вырезать/вставлять. Сущность можно отметить, как завершенной, при этом она отображается зачеркнутой.

Контейнеры.

Контейнеры могут содержать сущности и другие контейнеры. Содержимое контейнера можно ориентировать по вертикали или горизонтали.

Контейнеры можно вырезать/вставлять, изменять размер.

Корневые контейнеры — это пространства.

Темы.

Можно выбрать тему приложения в любой момент. Тема будет сохраняться для каждой базы.

Базы.

Приложение может переключаться между базами данных. Базы можно создавать, делать бэкапы, восстанавливать из бэкапов. Бэкап включает в себя базу данных и все файлы.

Файлы

К сущности можно добавить файлы. Картинки и текстовые можно просматривать. В планах есть добавить шифрование для файлов.

На данном этапе практически всё что нужно для себя я с делал, однако список TODO ещё длинный. Одна из интересных фич из списка — это отмена действий. Будет возможность смотреть примененные команды и отменять их. Архитектура приложения это позволяет – применяется трекер изменений для доменных объектов.

Все, кто хочет скачать приложение и поддержать, заходите на бусти.

Немного скриншотов:

Вероятно, надо было это отправить в хаб "я пиарюсь", но у меня не хватает кармы, да и есть некоторые подробности на чем это сделано. Можно рассматривать эту статью как набор возможностей веба для десктопа. Конкретнее это возможность написать код под браузер на Blazor, и использовать его с некоторыми доработками на различных платформах.

.NET MAUI Blazor Hybrid app позволяет из коробки писать под различные операционки и устройства. А сам Blazor можно еще оформить в виде сервиса. Но доработок будет больше. И это уже зависит от архитектуры приложения. Например, если говорить про бд, то если хорошо отделить базу данных от домена, то с минимальными усилиями. В моем случае это просто смена провайдера в di и отключение множественного выбора бд.

Переход же на server side с wasm, тоже прост благодаря трекеру изменений. Это делается в одном месте для всех данных.

АПД: Это приложение не миндмап. Тут нет цели изучать ассоциации и получить озарение. Это просто приложение с кучей деревьев в любом месте экрана с возможностью ссылаться на листья.

Комментарии (19)


  1. inkelyad
    02.01.2025 19:44

    Хм.. В TreeSheets было сделано очень похоже.


    1. Ascar Автор
      02.01.2025 19:44

      Не открывается.


      1. inkelyad
        02.01.2025 19:44

        Тогда сразу готовая сборка на github-е. Или сильно древнее видео (Youtube) от автора. Просто на домашней страничке еще куча скриншотов(web.archive.org) была.


  1. Jhayphal
    02.01.2025 19:44

    Не работал с Maui blazor hybrid приложениями. Было бы интересно увидеть сколько памяти это жрёт, как ОЗУ так и ПЗУ (размер получаемой сборки).


    1. Ascar Автор
      02.01.2025 19:44

      Так можно просто запустить. Ссылка в статье.


  1. SquareRootOfZero
    02.01.2025 19:44

    А каковы принципиальные отличия от Zim Wiki, например? Или, в принципе, от любой гипертекстовой системы организации информации? Что древовидная иерархизация не через отдельное оглавление и гиперссылки, а прямо в теле документа эти деревья рисуются?


    1. Ascar Автор
      02.01.2025 19:44

      Да, я это в статье и написал. Деление по контейнерам и деревья где угодно.


      1. SquareRootOfZero
        02.01.2025 19:44

        Допустим, взять обычное Wiki, классическое, любое, которому в обет сто лет: статья с гиперссылками, которые можно открыть и подробнее прочитать/написать, а в статье по каждой гиперссылке могут быть свои гиперссылки, и т. д. - тоже, по-сути, деление по контейнерам и деревья где угодно. В чём отличие?


        1. Ascar Автор
          02.01.2025 19:44

          Ну по вашей логике и чисто база данных это "тоже, по-сути". Как я уже и писал представление разное. Я писал про обсидиан? Писал. Зачем спрашивать одно и тоже?

          И я вас не заставлю пользоваться этим. Если у вас не было потребности в таком инструменте то проходите мимо. Пользуйтесь блокнотами.


  1. tolyanski
    02.01.2025 19:44

    CherryTree же, классика же


  1. stan_volodarsky
    02.01.2025 19:44

    Как вы обошлись без упоминания https://en.wikipedia.org/wiki/Mind_map ? Есть десятки приложений на эту тему: https://en.wikipedia.org/wiki/List_of_concept-_and_mind-mapping_software. Чем ваш подход лучше, удобнее?


    1. Ascar Автор
      02.01.2025 19:44

      Это всё же не миндмап.

      Удобнее лично для меня чем миндмапы и блокноты со ссылками. Вот лично мне удобно оперировать от общих понятий к детальным, и чтобы это было удобно видеть на экране. Блокнотами так не сделать, потому что там надо переходить и открывать вкладки, это не удобно.


  1. grizzly_8
    02.01.2025 19:44

    Чисто для справки: в Обсидиане тоже можно сделать древовидное отображение плагином. https://github.com/j-palindrome/obsidian-link-tree


  1. leon-mbs
    02.01.2025 19:44

    тоже такое написал

    https://github.com/leon-mbs/notty

    по мотивам статьи на хабре

    https://habr.com/ru/articles/316814/


  1. Donskoy
    02.01.2025 19:44

    Идея древовидной организации похожа на Workflowy


  1. Oceanshiver
    02.01.2025 19:44

    Все было неплохо до ссылки на бусти. Серьезно, клянчить деньги за сомнительный софт уровня студенческой курсовой?

    Это не говоря о том, что в статье в целом неплохо бы добавить побольше технических моментов, кроме "blazor", "maui" и "Fluxor"


    1. Ascar Автор
      02.01.2025 19:44

      Все было неплохо до ...

      Диаметрально противоречит:

      ... в целом неплохо бы добавить побольше технических моментов, кроме "blazor", "maui" и "Fluxor"

      Вам что скидку на донат дать или что? Я не понимаю. Донаты дело добровольное. Да и зачем "гению" донатить за "студенческую курсовую"? Напиши сам по быстрому!

      А если серьезно, то я не думаю что у вас есть такого рода задачи, что бы использовать этот инструмент.


      1. Oceanshiver
        02.01.2025 19:44

        Проблема в том, что статья выглядит как просьба с протянутой рукой, потому что больше ничего ценного в статье нет. Если бы вы, например, рассказали больше о технической реализации, дали ссылку на репозиторий и только после этого прикрутили донат - дело другое. А тут - "смотрите, сделал нечто, дайте деняк".

        Напиши сам по быстрому!

        Если будет необходимость - напишу, тем более стек как раз мой. Но тут вопрос не в том, что мне нужен/не нужен этот софт, тут вопрос отношения к сообществу Хабра. Удивительно что вы этого не понимаете.

        Диаметрально противоречит:

        Не противоречит, потому что до этого были хоть какие-то технические детали (перечисление технологий и введение в концепцию приложения), и было ощущение что дальше нам расскажут вглубь и вширь, а по факту дальше была ссылка на донаты и пара скринов.


  1. Ascar Автор
    02.01.2025 19:44

    deleted