Как я сделал PWA-приложение для заметок и ссылок за вечер (и почему оно работает без интернета)

Логотип KylikLink:)
Логотип KylikLink:)

Проблема

Я заметил, что постоянно сохраняю ссылки в «Избранном» браузера или пишу сам себе в Telegram. А потом трачу кучу времени, чтобы найти нужное.

Существующие решения - Notion, Evernote, Google Keep - либо перегружены функциями, либо требуют регистрации и интернета.

Решение

Я сделал KylikLink - минималистичное приложение для заметок и ссылок.

  • Без регистрации - данные хранятся только на устройстве
  • Работает оффлайн - открывается без интернета
  • Устанавливается на телефон - через браузер, как нативное приложение
  • Перенос заметок между устройствами - экспорт/импорт через JSON
  • Корзина с восстановлением - удалённые заметки хранятся 30 дней
  • Поиск, закрепление, редактирование - всё, что нужно

👉 Ссылка: https://kyliklink.ru

Как устроено

Это PWA (Progressive Web App). Весь код - на чистом HTML/CSS/JS, без фреймворков.

  • Оффлайн-режим - Service Worker кэширует все файлы при первом открытии

  • Хранение - localStorage (заметки и корзина)

  • Перенос заметок между устройствами - ручной экспорт/импорт (никакого облака)

Сложности, которые решил

  • Не потерять заметки при обновлении - добавил миграцию данных из старых версий

  • Корзина с автоочисткой - заметки удаляются через 30 дней

  • PWA-обновления - принудительная активация нового Service Worker

Что в планах (версия 2.0)

  • PIN-код на отдельные заметки - любая заметка может быть защищена PIN-кодом.

  • Напоминания - push-уведомления о важных заметках в нужное время.

  • Чеклисты - заметки в виде списка дел с галочками.

  • Голосовые заметки - запись голосом вместо текста.

Заключение

KylikLink - это пример того, как простое PWA-приложение может решать реальную задачу без сложной инфраструктуры, серверов и регистраций. Оно работает оффлайн, устанавливается на телефон и не отправляет ваши данные в облако.

Приложение уже работает, и его можно установить на телефон.

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

11