Всем привет! Меня зовут Алексей, я являюсь .NET разработчиком. Это моя первая статья на Хабре. Время от времени возникает необходимость где-то записывать различные вырезки из статей, инструкции, сниппеты с кодом и т. д. Раньше приходилось хранить все это в отдельных файлах в системе, но со временем их становилось все больше, и я начал забывать, что и где находится. Однажды возникла идея разработки Desktop приложения на WPF для удобного хранения текстовой информации в одном месте, чтобы можно было ее систематизировать и быстро находить.
Начал разработку в 2022 г. и продолжаю ее по сей день в свободное от основной работы время. На данный момент приложение имеет довольно неплохой функционал, оно получилось удобным и удалось реализовать практически все что требовалось на момент задумки. Приложение называется Data Organizer и предназначено для работы в ОС Windows.
Интерфейс
Интерфейс выполнен по принципу Master–detail, где в левой части экрана находится иерархический список папок и документов, напоминающий проводник в ОС Windows, а в правой, представление выбранного в списке документа. В данный момент реализованы следующие типы документов:
Простой текст - обычный текстовый документ с возможностью подсветки синтаксиса;
Форматированный текст - аналог документа docx;
Электронная таблица - аналог документа xlsx;
Набор данных - документ в виде набора карточек, позволяющих разделять информацию по категориям с порциями текста.
В планах добавить возможность хранения документов PDF.
В настройках можно изменить параметры цветовой темы приложения, выбрать русский или английский язык интерфейса.
Есть места, где локализация только английская, это диалог подключения к базе данных (очень много текста нужно перевести), в представлении документов с форматированным текстом и электронных таблицах для которых используются компоненты от Telerik (нужно будет найти время чтобы заняться этим).
Возможности
Есть возможность перетаскивать объекты в любое место в списке с помощью Drag-and-drop, а также с помощью клавиатуры комбинациями Alt+Up/Down в пределах папки.
Реализован поиск объектов как по названиям и тэгам (тэги служат для обобщения объектов в списке), так и по содержимому документов (в данный момент поиск по содержимому применяется к документам с простым и форматированным текстом).
Есть возможность экспорта всех данных в один XML или JSON файл, или в физические файлы, где каждому документу соответствует один файл на диске с учетом иерархии папок в списке. По такому же принципу реализован и импорт данных в приложение.
Присутствует история просмотров содержимого документов и история копирования содержимого.
Предусмотрена возможность шифрования содержимого папки в редакторе с помощью контекстного меню. Чтобы иметь данную возможность, необходимо вначале установить мастер-ключ с помощью диалога "Шифрование" в главном меню редактора. Мастер-ключ сохраняется в системе, в пользовательской переменной окружения и используется для смешивания с введенным пользователем паролем при шифровании и дешифровании. При шифровании содержимого папки, введенный пользователем пароль хешируется с помощью библиотеки bcrypt. Алгоритм шифрования AES, взят отсюда https://tomrucki.com/posts/aes-encryption-in-csharp/. Я нахожусь в поиске наиболее надежного, комплексного механизма шифрования с учетом особенностей разработки под Desktop, поэтому в будущем буду дорабатывать, изменять эти механизмы в приложении. Если у Вас имеется недоверие к шифрованию чувствительных данных в приложении Data Organizer, лучше их там не шифровать и не хранить.
Есть возможность добавления комбинации глобальных горячих клавиш для документов с простым текстом, чтобы можно было быстро копировать содержимое документов в системный буфер обмена.
Режим «Избранное». Специальный режим работы, в котором приложение имеет минималистичный интерфейс для показа только избранных документов с простым текстом. Данный режим служит для быстрого нахождения и копирования в системный буфер обмена наиболее часто используемых порций текста. Режим становится доступным в меню, если в главном списке редактора есть избранные документы, которые назначаются с помощью контекстного меню нажатием на правую кнопку мыши. Так же в данном режиме есть просмотр истории копирования содержимого, для еще более быстрого повторного копирования текста.
Хранение данных
По умолчанию приложение использует для хранения данных локальную базу данных SQLite, создаваемую и находящуюся рядом с исполняемым файлом, но есть возможность подключения через специальный диалог к другой базе SQLite а так же к MySQL, Oracle, PostgreSQL, SQLServer.
Публикация
Приложение компилируется в портативную сборку x64, включающую в себя целевую платформу .NET 8, для удобства переноски на съемном носителе. Систему своими файлами не засоряет, все необходимые для работы файлы, создает в папке рядом с исполняемым.
Заключение
Я хочу поделиться своим приложением бесплатно со всеми желающими. Возможно, кому-то оно будет так же полезным. Так как занимаюсь его разработкой в одиночку, я был бы очень благодарен за обратную связь (для этого можно использовать диалог «Техническая поддержка» в самом приложении). Буду рад предложениям по доработкам, улучшению, замечаниям, добавлению новых функций, выявленным багам и т.д.
Приложение находится в открытой папке на Яндекс диске и доступно по ссылке: https://disk.yandex.ru/d/jeUJ8m7PJYRu4g или qr-коду:
Я пытался найти действующий, не заблокированный на территории России ресурс для размещения скомпилированной сборки Data Organizer, но не удалось, если кто-нибудь сможет подсказать о существовании такого, буду очень благодарен.