Как я сделал Notion 'у себя дома', есть фулл

0f1aef573ddaa68017cfb536acf96256.png

Привет, харбовчане!

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

А сейчас вот появилось — решил демонстрации ради запилить Notion из рельсов и шпалок.

К постановке вопроса зачем мы вернемся, как это принято тут и у всех айтишников — в самом конце, а сейчас к конкретике и без воды:

— Прям вот с нуля, только с персональной подготовкой (20 лет в деле), до записи видео просто освежил и прозвонил руками тонкие для меня места, чтобы не пороть запись.

— Минимальное количество зависимостей, только когда прям надо.

— Ruby on Rails из коробки как идет.

— Frontendless — никакого JSON и фронтенда*

— Realtime — ве живое и шевелится через вебсокеты и прочие турбофреймы

— Винда + WSL.

— Tailwind и все его замечательные трюки

— Hotwire StimulusJS + SortableJS, Stimulus-use, Stimulus dropdown

— Интернационализация — ru

— Ну и так по мелочи.

Перечень реализованных фичей вот такой:

* Регистрация, Авторизация

* Воркспейсы

* Страницы — иерархия, сортировка вложенности, домашняя страница

* Текстовые блоки с файловыми вложениями, обработка изображений

* Инициализация таблиц из CSV

* Преобразование из Markdown, pandoc

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

* Закрепление view версий таблиц

* Фильтр содержимого — сортировка по датам, изменения состава отображения, количества ячеек, значения колонок

Ну и зачем все это спросите вы?

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

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

Это наилучший способ продемонстрировать новичкам как нужно решать задачи. Программирование тут ровным счетом не причем.

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

В мире разработки сейчас не нужно ничего «закладывать» на будущее — все скейлится тянется и переписывается когда надо, полон хабр этих историй.

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

Итак мои утверждения на прожарку, уважаемым вам:

1. Любой софт заменять можно и нужно.

Ну для начала пример готов — сделать замену notion в вашей компании возможно.

Наблюдаемый результат за 6 часов. А что если поработать пару дней?

Я придерживался всегда одного утвреждения — вы должны владеть своими данными.

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

Это данные, критичные. Не стоит недооценивать предсказуемость тупизны © Тони.

2. Всегда достаточно базовых фичей.

Все прекрасно знают рассказы про то, как в MS Word большинство использует до 3% функций.

И эти функции повторяются примерно одинаково в любом Wysiwg редакторе.

Все остальное это уже обвес бизнес продукта для расширения зоны покрытия потребителей.

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

На остальное у них просто не будет ни времени ни желания.

Это вообще тема отдельной дискуссии, которая нас приведет прямиком к Системной инженерии, к ТРИЗу и к принципам Форда, Тойоды 5 почему и тд.

Полуить необходимое можно и нужно в минимальном объеме.

Приведенный мной пример это демонстрирует наглядно. Да, вы не сделаете замену Ноушну в виде конкурирующего сервиса, это вообще отдельная песня.

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

3. Стоимость замены.

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

Это не значит что вот все готово переезжайте, но это значит что разговоры (которые у меня идут и будут регулярно продолжаться) с технарями, на момент формирования планов в IT отделов как нам быть и куда плыть, не будут содержать таких фраз как «x человеко-лет, даже и не думайте».

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

Свой софт дает опору для решений, которые нельзя было принимать в угоду «сложившимся микросервисным обстоятельствам» и тд и тп.

4. Практическое обучение разработчиков на примере.

Лучший способ снять миллиарды вопросы, а как, а что, а куда.

Пользуйтесь, именно трюк с разработчиками я проводил многократно, скорость ввода в эксплуатацию новых разработчиков (а в свое время приходилось конвертировать из PHP в Ruby, сейчас добавился еще JS/TS и Python, но сути не меняет).

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

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

Вот тут и просыпается понимание у новичков и интересующихся, а куда имено тут смотреть. Все верно — на принятие решений как поступать в конкретный момент времени.

Опыт есть путь ошибок неверных решений. А когда у тебя надежный конь (в данном случае рельса), то тебе будет проще совершать ошибки.

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

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

5. Фронтенд не нужен.

Вся эта пляска с запаковкой смыслов в json, а потом обратно, синхронизация стейта, ГрафКУЭЛЬ о боже мой, короче можно без этого жить и делать вещи друзья.

Надеюсь вам было полезно и интересно, ссылка на видос на ютубе.

Немного про отечественные заменители:

1. Заблокированный ютуб прожевал, обработал и запушил в течении 2х часов вчера.

2. Вк на эту минуту еще обрабатыват, загружался всю ночь.

3. Дзен не пропустил по лимиту файла — до 70GB.

4. Рутуб не пропустил по лимиту времени — до 5 часов.

Платформу я даже не трогаю, уровень забагованности и падений с перового дня просто не дает пользоваться.

© Habrahabr.ru