Блокнот с иерархическими тегами и вкладывающимися записями

в 12:48, , рубрики: Без рубрики

Всем здравия!
Запрашиваю хабраэффект на ognivo.me

Функциональная часть

Это это блокнот для прозы и инженерной мысли, личных записей и планов на жизнь. Записи можно отмечать множеством меток, и детализировать их (метки). Внутрь записи можно вкладывать новые записи, задачи и списки.

Принцип

Блокнот сделан так, чтобы соответствовать мыслительному процессу. Для этого он поддерживает операции конкретизации записи (углубление в мышлении) и обобщения. Каждая запись может быть связана со множеством меток (тегов) которые также можно уточнять и обобщать.

Устройство записи

Также записи сохраняются автоматически, все время. Можно ставить сколько хочешь меток, и углублять их пока не надоест.
Блокнот с иерархическими тегами и вкладывающимися записями

Вложенные записи

Записи можно вкладывать друг в друга. Теоретически — сколько угодно глубоко. Не проверял дальше четвертого уровня, *смеюсь*.
Блокнот с иерархическими тегами и вкладывающимися записями

Отображение записей

Есть два режима вывода записей: хронологический и древовидный. Можно отключать разные виды записей.
Блокнот с иерархическими тегами и вкладывающимися записями

Перспективы

Доступны две дополнительные перспективы:
— лес: отображение струтуры меток. Для меток с более чем шестью подкатегориями доступна навигация.
— время: отображение временной привязки задач
Блокнот с иерархическими тегами и вкладывающимися записями

Архитектурная / инженерная часть

Клиент и сервер написаны на JS, общаются через JSON. MySQL используется как система хранения.

Сервер

NodeJS обернутый в Express + ORM + MySQL. ORM — это явно глупость, но ничего другого я пока не умею. Хочу перейти на декларативные функции данных, т.к. перегонять данные в классы, чтобы потом их перегнать в JSON — явный перебор.

Клиент

Клиент с самой первой версии писался как набор AMD модулей (за исключением совсем нулевой версии). Модули — это мана небесная, избавление от загрязнения пространства имен, инструмент распила кода, снимают стресс связанный с тем чтобы следить за подключением всех необходимых пакетов.

Системные требования

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

Кольцевые зависимости + Впрыск зависимостей

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

Инициализация

При загрузке страницы, после отрабатывания статики, первым делом грузится весь лес (множество деревьев) меток пользователя. Потом согласно текущему context-id грузятся соответствующие записи, связанные с этой меткой.

Ajax подгрузка записей

Перспективы «записи» и «время» по своему генерируют события об исчерпании доступных записей, в ответ на которые клиент делает проход по дереву меток, и находит информацию о записях с подходящей временной меткой. Набрав записи в заданном временном диапазоне, клиент запрашивает с сервера весь список. После ответа на клиенте происходит рендер.

Респекты

С первой версией фронтэнда помогал Виктор Орлов.

Планы

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

P.S.: Статью буду обновлять следуя интересу читателей

Автор: overmind0

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js