...

воскресенье, 18 мая 2014 г.

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

Всем здравия!

Запрашиваю хабраэффект на ognivo.me

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




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



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



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


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



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


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



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


Перспективы



Доступны две дополнительные перспективы:

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

— время: отображение временной привязки задач


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




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



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



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



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

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



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



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



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

Респекты




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

Планы




Блокнотом можно пользоваться, закрывать не буду. Записи платными делать не буду, весь контент принадлежит автору. Следующим этапом думаю сделать управление доступом к записям.

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

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




This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий