Блокнот з ієрархічними тегами і вкладати записами

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

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

Це це блокнот для прози та інженерної думки, особистих записів і планів на життя. Записи можна відзначати безліччю міток, і деталізувати їх (мітки). Всередину записи можна вкладати нові записи, завдання і списки.
 
 
 
Принцип
Блокнот зроблений так, щоб відповідати розумовому процесу. Для цього він підтримує операції конкретизації записи (поглиблення в мисленні) і узагальнення. Кожен запис може бути пов'язана з безліччю міток (тегів) які також можна уточнювати й узагальнювати.
 
 
Пристрій запису
Також записи зберігаються автоматично, весь час. Можна ставити скільки хочеш міток, і поглиблювати їх поки не набридне.
 
 
 
Вкладені записи
Записи можна вкладати один в одного. Теоретично — скільки завгодно глибоко. Не перевіряв далі четвертого рівня, * сміюся *.
 
 
 
Відображення записів
Є два режими виведення записів: хронологічний та деревовидний. Можна відключати різні види записів.
 
 
 
Перспективи
Доступні дві додаткові перспективи:
 - Ліс: відображення струтури міток. Для міток з більш ніж шістьма підкатегоріями доступна навігація.
 - Час: відображення часової прив'язки завдань
 
 
 

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

Клієнт і сервер написані на JS, спілкуються через JSON. MySQL використовується як система зберігання.
 
 
Сервер
NodeJS обгорнутий в Express + ORM + MySQL. ORM — це явно дурість, але нічого іншого я поки не вмію. Хочу перейти на декларативні функції даних, тому що переганяти дані в класи, щоб потім їх перегнати в JSON — явний перебір.
 
 
Клієнт
Клієнт з найпершої версії писався як набір AMD модулів (за винятком зовсім нульовий версії). Модулі — це мана небесна, позбавлення від забруднення простору імен, інструмент розпилу коду, знімають стрес пов'язаний з тим щоб стежити за підключенням всіх необхідних пакетів.
 
 
Системні вимоги
Все чудово працює на останньому хрому. Сафарі, та інші браузери базовані на webkit — добре.
На рахунок інших не став заморочуватися з тестуванням і налагодженням. Ніякої підтримки мобільних в силу обмежених ресурсів.
 
 
Кільцеві залежності + Вприск залежностей
Коли робили вкладені записи — з'явилися кільцеві залежності, що було вирішено установкою необхідних функцій в окремому модулі.
 
 
Ініціалізація
При завантаженні сторінки, після відпрацювання статики, першою справою вантажиться весь ліс (безліч дерев) міток користувача. Потім згідно поточному context-id вантажаться відповідні записи, пов'язані з цією міткою.
 
 
Ajax подгрузка записів
Перспективи «записи» і «час» за своїм генерують події про вичерпання доступних записів, у відповідь на які клієнт робить прохід по дереву міток, і знаходить інформацію про записи з відповідною тимчасової міткою. Набравши записи в заданому часовому діапазоні, клієнт запитує з сервера весь список. Після відповіді на клієнті відбувається рендер.
 
 

Респекти

З першою версією фронтенда допомагав Віктор Орлов .
 
 

Плани

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

PS: Статтю буду оновлювати слідуючи інтересу читачів

 
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.