Notion — онлайн-приложение для организации работы и личных дел в одном месте. Это одновременно цифровой блокнот, планировщик, список задач, база данных и многое другое. Всё хранится в облаке, и получить доступ к данным можно с любого устройства. Информацию можно скрывать или публиковать. Удобная штука для всех, кто хочет сделать свою базу знаний или структурировать информацию по проектам.
26 августа на сайте Notion появилось сообщение, что 9 сентября платформа закроет доступ пользователям из России. Мы решили изучить, как устроен Notion и какие у него есть аналоги.
На каких технологиях работает Notion
Интерфейс Notion основан на React.js — библиотеке JavaScript для создания пользовательских интерфейсов. Особенность React.js в том, что она использует виртуальный DOM (Document Object Model, «объектная модель документа»). Создание и редактирование документов в Notion происходит онлайн, и получается, что браузеру нужно постоянно обновлять часть страницы, в которой происходят изменения. Если делать это в реальном DOM, будет медленно. React.js создаёт его легковесную копию, сравнивает её с реальным DOM и определяет, какие изменения внести так, чтобы браузер не пересобирал всю страницу полностью.
HTML, CSS и JavaScript используются для структурирования и оформления контента, а также для включения интерактивных элементов. Помимо чистого JavaScript, в Notion применяется TypeScript — надстройка над JavaScript, которая добавляет ему новые функции. Например, в TypeScript можно заранее указать, какого типа данные будут храниться в переменных. Если переменная объявлена как число, TS не позволит присвоить ей строку. Это называется статической типизацией и помогает избегать многих ошибок.
Бэкенд-архитектура основана на Node.js. Это серверная платформа на базе JavaScript для обработки запросов, выполнения бизнес-логики приложения и работы с базами данных. Node.js обрабатывает несколько операций в фоновом режиме, не прерывая основной поток. Это обеспечивает обновление в реальном времени и возможность совместной работы. Для упрощения процессов создания маршрутов и обработки HTTP-запросов используют Express — фреймворк для Node.js, который обеспечивает быструю и гибкую настройку серверной логики. С ним многочисленные запросы при работе с Notion обрабатываются без задержек.
Базы данных в Notion управляются PostgreSQL — системой управления реляционными базами данных. Она поддерживает сложные SQL-запросы и транзакции и хранит данные в таблицах с предопределёнными столбцами и типами данных. Такая строгая структура помогает избежать ошибок и упростить работу с данными. Связи между данными устанавливаются через внешние ключи — это гарантирует, что связи останутся корректными. Операции с данными выполняются атомарно, то есть по кусочкам. Если какая-то операция не удаётся, все изменения отменяются, а данные не повреждаются.
Redis — ещё один бэкенд-инструмент в Notion, который выполняет много ключевых задач для высокой производительности и надёжности сервиса. Это высокоскоростная база данных, которая хранит данные в оперативной памяти, за счёт чего их можно быстро их записывать и читать. Redis используется для кэширования, управления сессиями, обработки очередей задач и синхронизации данных в реальном времени. В результате Notion работает стабильно даже при высоких нагрузках и большом количестве одновременных сессий пользователей.
Сетевые технологии и API
Соединение между клиентом и сервером обеспечивает протокол связи WebSockets. Традиционные HTTP-запросы инициируются клиентом и состоят в односторонней передаче данных от клиента к серверу и обратно по каждому запросу. WebSockets позволяет серверу отправлять данные клиенту без ожидания запроса от него.
У Notion есть API, которые позволяют интегрировать платформу с другими инструментами и сервисами. Публичный API Notion построен на основе REST, работающего через стандартные HTTP-запросы. API включает множество эндпойнтов — конкретных URL-адресов, определяющих ресурс или функцию, к которым можно получить доступ. Эти эндпойнты включают страницы, базы данных, блоки и комментарии. API использует стандартный протокол аутентификации OAuth 2.0, что позволяет приложениям и сервисам безопасно получать доступ к данным пользователя.
Благодаря такому мощному технологическому стеку Notion получается гибким и масштабируемым приложением, которое объединяет множество инструментов. В результате использовать Notion можно самыми разными способами — как площадку для портфолио или блога, личную записную книжку или корпоративную базу знаний с таск-трекером. При этом данные обрабатываются быстро, а производительность остаётся высокой даже со множеством пользователей онлайн одновременно.
Как сохранить свои данные в Notion
Если вы пользуетесь Notion и храните там какие-то данные, их можно выгрузить на свой компьютер, чтобы не потерять. Доступ к Notion из России закроется 9 сентября, поэтому нужно успеть до этого момента.
Экспортировать можно всё: отдельные страницы, базу данных и даже всё рабочее пространство (в этом случае потребуются права администратора). Страницы и базы данных можно сохранить у себя в формате PDF или как HTML-документы. Также страницы, которые не относятся к базе данных, можно выгрузить как файл Markdown. Полностраничные базы данных можно экспортировать в виде файла CSV с файлами Markdown для каждой подстраницы.
Вот как сохранить у себя страницу или базу данных из Notion:
1. Открыть Notion, нажать значок с тремя точками в верхнем углу страницы и выбрать в выпадающем меню пункт Export:
2. На экране появится диалоговое окно с параметрами выгрузки. В пункте Export format нужно выбрать желаемый формат документа, например PDF.
3. В пункте Include content нужно указать, что выгрузить: весь контент или только текст без файлов и изображений.
4. Если сохраняете данные в PDF, система попросит также указать размер страницы Page format и масштаб Scale percent:
5. Если у страницы есть подстраницы, можно выгрузить их тоже, активировав ползунок Include subpages.
6. После этого нужно указать папку на устройстве, в которую будут выгружены файлы.
Если у вас есть права администратора рабочего пространства, можно выгрузить его в HTML, Markdown или CSV (если это база данных). Среди выгруженных файлов будет index.html с картой сайта, с помощью которой можно будет перемещаться между документами. Но если в рабочем пространстве есть, например, частные страницы других пользователей, они не будут включены в экспорт.
Вот как сохранить у себя рабочее пространство из Notion:
1. Открыть Notion и в левой вертикальной навигационной панели выбрать Settings & members.
2. Откроется окно аккаунта. В левой вертикальной навигационной панели нужно выбрать Settings, а справа — Export all workspace content:
3. На экране появится диалоговое окно с параметрами выгрузки. В нём нужно выбрать формат Export format, в котором будут выгружены данные. PDF доступен только бизнес-аккаунтам.
4. В пункте Include databases нужно выбрать вид отображения баз данных (текущий Current или по умолчанию Default).
5. В пункте Include content нужно указать, что выгрузить: весь контент или только текст без файлов и изображений.
6. После этого Notion отправит на привязанный к вашему аккаунту адрес электронной почты ссылку, по которой можно будет скачать себе всё рабочее пространство.
Помимо экспорта на свой компьютер можно перенести данные из Notion в другой сервис. Например, это можно сделать в EvaWiki, Teamly, Yonote и WEEEK. Мы советуем не только перенести данные, но и выгрузить их — для надёжности, мало ли что.
Российские аналоги Notion
Notion — это большой конструктор из различных инструментов. Мы будем исходить из того, что аналог должен иметь такие возможности:
- Предлагать готовые шаблоны страниц.
- Собирать страницы из каких-то готовых блоков.
- Позволять детально контролировать внешний вид и структуру текста и других элементов.
- Обеспечивать одновременную работу разных пользователей с одним документом.
- Содержать календари.
- Работать с таблицами.
- Производить простые вычисления.
- Ссылаться из одних документов на другие.
- Публиковать материалы в виде веб-страниц.
- Поддерживать интеграции с другими сервисами.
- Идеально, если всё это будет на бесплатном тарифе.
Аналоги мы выбирали из российского ПО. Так спокойнее, потому что запрет предоставлять облачные сервисы российским пользователям рано или поздно может коснуться и других иностранных платформ. А кроме того, в России много крутых ребят, которые делают отличные продукты. Если научитесь — будете в их числе.
GemDoc — сервис для совместной работы над контентом. Есть текстовый редактор, таблицы, функции для создания голосований, добавления файлов и даже блоков кода с подсветкой синтаксиса для популярных языков программирования. GemDoc — продукт стартапа Gemforge из города Иваново. Они сами используют GemDoc в работе и постоянно добавляют в него новые функции.
Teamly — платформа для совместной работы и управления знаниями, которая поддерживает умные таблицы, базы данных и управление проектом. У Teamly те же возможности, что у Notion, есть даже встроенный ИИ-ассистент. Можно перенести данные из Notion. Разработкой Teamly занимается российский диджитал-интегратор QSOFT.
Yonote — ещё одна альтернатива Notion, в которой есть практически те же возможности, включая ИИ-ассистента. Можно перенести данные из Notion. Проектом занимается компания «ВИЛИКС» из Краснодара.
WEEEK — сервис для управления проектами, в котором, помимо таск-менеджера и CRM, есть база знаний. В ней можно создавать документы, форматировать текст, добавлять изображения и видео, вставлять списки и таблицы и прикреплять файлы. Можно перенести данные из Notion. Разработкой занимается московская компания «ВИИИК».
Что дальше
Дальше — как обычно: будем следить за тем, что происходит, и разбираться в этом как технари. Если хотите научиться уметь так же и делать это быстро и с пониманием — приходите в Практикум. А если хотите сами создавать аналоги таких продуктов — тоже приходите в Практикум, там учат как раз создавать реальные проекты.