Offlog: локальный менеджер задач без облака

Логотип Offlog — off the cloud, still logged

Ваши задачи. Ваши устройства. Только ваши. Off the cloud, still logged.

Бесплатный менеджер задач с открытым исходным кодом, работающий локально. Без учётной записи, без телеметрии, без подписки — навсегда. Запускается в браузере, как нативное Android-приложение и как десктопное приложение для Windows — все три варианта используют одну и ту же кодовую базу и синхронизируются друг с другом через вашу собственную сеть. (Актуальная версия всегда отображается в бейдже выше; что изменилось — в docs/CHANGELOG.md.)

Скриншоты

Реальные снимки экрана из реальной сборки — никаких макетов, никакого Lorem Ipsum.

Вид дашборда со списком проектов и просроченными задачами

Dashboard — все проекты с первого взгляда, закреплённые и просроченные задачи на виду

Канбан-доска с колонками, карточками и прогрессом чеклистов

Kanban — колонки с перетаскиванием, сроки выполнения на карточках, теги и прогресс чеклистов

Табличный список задач с сортировкой и фильтрами

List — сортируемые столбцы, сохранённые фильтры, многоуровневая сортировка

Режим фокуса с тремя задачами на день

Focus — выберите до 3 задач на день, отсортированных по приоритету: закреплённые → просроченные → ближайшие по сроку

Панель деталей задачи поверх календарного вида Agenda

Task detail — полноценный редактор поверх месячного календаря Agenda

Глобальный поиск и палитра команд

Search (Ctrl+K) — единая строка для поиска задач, заметок, текста чеклистов и команд

Канбан-доска в тёмной теме

Светлая или тёмная тема — на каждом экране, а не переключатель, который работает через раз

Зачем это нужно

Одна общая кодовая база на Svelte, завёрнутая тремя способами (браузер, Android, Windows). Каждое устройство хранит собственную локальную базу данных; включив синхронизацию, телефон и компьютер общаются напрямую через домашний Wi-Fi — никакой облачный сервис не стоит посередине, не нужно создавать учётную запись, ни одна функция не спрятана за платный доступ. В обоих режимах приложение полностью работает офлайн.

Изначально это был личный инструмент, и та же модель синхронизации хорошо подходит для небольшой, доверенной группы, находящейся в одном месте, — семьи, маленькой команды, офиса, совместно использующего доску в одной сети. Это не продукт для удалённой работы с множеством пользователей: нет разграничения прав, нет учётных записей, синхронизация возможна только в рамках одной локальной сети. Подробнее о границах применения — в манифесте в начале docs/DECISIONS.md.

Проект создавался открыто и намеренно — каждое решение, включая те, что впоследствии были пересмотрены, зафиксировано: docs/DECISIONS.md (почему именно так, включая ответы на вопросы «а почему не просто…»), docs/ROADMAP.md (что запланировано), docs/TECH.md (реальная архитектура) и полный docs/CHANGELOG.md начиная с первого релиза.

Статус: завершён и используется каждый день — не заброшен, не в активной разработке. Создавался в течение июля 2026 года; с 1 августа 2026 года является основным менеджером задач автора. Текущая работа — исправление ошибок, обнаруженных в реальном использовании, обновление зависимостей и проверка безопасности. Новые функции появляются только при наличии реальной потребности, а не просто идеи. docs/STORY.md — честный рассказ о том, как всё это создавалось, включая месяц, когда фундамент был выброшен и переписан заново, и ошибку в резервном копировании, обнаруженную за двенадцать часов до того, как это стало бы критично.

Возможности

Складывалось месяцами реального ежедневного использования — часть возможностей пришла из изначального плана, часть — из замеченного в процессе работы. Подробнее обо всём: docs/CHANGELOG.md (последние релизы) и docs/archive/changelog-archive.md (всё более раннее, по одной строке на релиз).

Основные функции управления задачами

  • Пространства (Spaces) и проекты — организуйте работу в цветные пространства, каждое из которых содержит несколько проектов с собственным набором статусов

  • Виды Kanban, List, Table и Agenda (ориентированный на дедлайны) для каждого проекта — с сохранёнными фильтрами, выбором и переупорядочиванием столбцов, многоуровневой сортировкой в List/Table

  • Режим Focus — ежедневное ограничение фокуса: выберите до 3 задач на день из сортируемого по принципу round-robin выборщика, а не из автоматически вычисляемого списка приоритетов, которому никто не доверяет

  • Чеклисты с индикатором прогресса, теги с автодополнением в рамках проекта и опциональным цветом, пользовательские поля (глобальные, не привязанные к проекту)

  • Детали карточки — полноценный редактор задачи: заметки со счётчиком длины, приоритет, срок выполнения, время напоминания (независимо от срока), статус, чеклист, пользовательские поля, ссылки на связанные задачи, прикреплённые файлы и журнал изменений каждой карточки

  • Прикреплённые файлы — фотографии, PDF, таблицы и любые другие файлы (кроме HEIC/HEIF, пока не поддерживаются), до 10 МБ каждый и до 10 штук на задачу. Изображения масштабируются и перекодируются прямо на устройстве перед сохранением, чтобы фотография с телефона не раздувала базу данных. Вложения синхронизируются так же, как всё остальное, — без отдельного шага загрузки

  • Повторяющиеся задачи (ежедневно/еженедельно/ежемесячно) — задача сбрасывается на месте вместо создания дубликата; корректно обрабатываются даты в конце месяца (задача со сроком 31-го числа переносится на 28-е/29-е/30-е в более коротких месяцах, а не через два месяца) и переходы на летнее/зимнее время

  • Быстрые ярлыки для установки срока при создании задачи; дублирование задачи; шаблоны проектов (копирование структуры статусов, опционально вместе с открытыми задачами)

  • Dashboard — все проекты с первого взгляда, закреплённые задачи, просроченные задачи, еженедельная сводка «выполнено за прошедшую неделю»

  • Quick Add (Ctrl+N) и Global Search (Ctrl+K) из любого места — поиск охватывает названия задач, заметки и текст чеклистов, а не только названия — плюс палитра команд, которая находит действия, а не только задачи

  • Undo и Recycle — «мягкое» удаление везде с возможностью отмены, полноценный раздел «Корзина» с восстановлением/окончательным удалением и настраиваемой политикой хранения

Синхронизация — это основная идея, а не дополнение

Локальная синхронизация телефон–компьютер (и компьютер–компьютер) — именно ради этого проект вообще появился: единый список задач, всегда актуальный, на каждом вашем устройстве, без передачи данных облачному провайдеру. Большинство self-hosted, local-first приложений ограничиваются фразой «синхронизация возможна, если вы развернёте собственный сервер» — для тех, кто не готов этим заниматься, это реальный барьер. Windows-приложение Offlog само является сервером: в него встроен NyxDB (небольшой, самостоятельно написанный сервер с протоколом CouchDB), который настраивается при первом запуске, а телефон находит его в сети автоматически. Отдельные технические компоненты (репликация по протоколу CouchDB, обнаружение через mDNS, обмен учётными данными через парный handshake) сами по себе не новы — в том и состоит задача: упаковать всё три вместе так, чтобы нетехнический пользователь их вообще не видел. (До версии v5.7.10 в качестве встроенного сервера использовался настоящий Apache CouchDB; затем его заменил NyxDB, что позволило сократить размер установщика примерно в 10 раз — подробная история в docs/DECISIONS.md.)

  • Живая двунаправленная репликация по протоколу CouchDB — запись на одном устройстве отображается на другом в реальном времени, пока оба находятся в одной сети

  • Windows-приложение поставляется с NyxDB в комплекте — ничего не нужно устанавливать отдельно, никаких знаний администрирования серверов не требуется. При первом запуске приложение автоматически генерирует случайный порт, пароль администратора и идентификатор базы данных, запуская NyxDB как управляемый фоновый процесс на всё время работы приложения

  • Телефон обнаруживает компьютер автоматически через mDNS (_offlog._tcp) и выполняет сопряжение по одноразовому 6-значному коду, показанному на компьютере, — никакого ручного ввода IP-адреса, никакой передачи учётных данных по воздуху до завершения сопряжения, а код блокируется после нескольких неверных попыток

  • Если IP-адрес компьютера меняется (обновление DHCP, перезагрузка роутера), телефон автоматически переопределяет его при следующей неудачной синхронизации, не требуя повторного сопряжения вручную

  • Приложение полностью работает офлайн без какой-либо настройки, если синхронизация не включена; определение отсутствия соединения, понятные сообщения об ошибках синхронизации и интерфейс разрешения конфликтов означают, что потеря связи всегда заметна и устранима — никакой тихой потери данных

  • Произвольные имена устройств со стабильным внутренним идентификатором, плюс список «недавно виденных устройств»

Всё вышеперечисленное работает исключительно в локальной сети (LAN) — намеренно — подробнее о том, почему синхронизация вне домашней сети и учётные записи были сознательно выведены за рамки проекта, в docs/DECISIONS.md.

Два телефона без компьютера — хотите обмениваться данными? Не поддерживается — только Windows-приложение может выступать синхронизирующим узлом, к которому подключаются телефоны (логику решения см. в разделе mesh-sync файла DECISIONS.md). Для переноса данных между двумя телефонами, которые никогда не будут подключены к одному компьютеру, используйте экспорт/импорт (Настройки → Резервное копирование и хранилище).

Переезд на новый компьютер? Всё, что нужно Offlog, — данные и настройки подключений — хранится в одной папке на старом компьютере (проверено: папка переживает обычное удаление и переустановку, поэтому описанный способ нужен только при смене железа, а не при переустановке на том же компьютере). Скопируйте всю папку на новый компьютер до первого открытия Offlog там — и все ранее подключённые телефоны переподключатся автоматически, без необходимости сопрягать их заново. (Для любопытных: папка находится по адресу %APPDATA%\com.offlog.app\ в Windows.)

Android-приложение — протестировано и работает на реальном устройстве

  • Нативное приложение на базе Capacitor, используется каждый день, а не просто собрано и забыто

  • Виджеты главного экрана для Quick Add, Agenda в режиме только для чтения и списка проектов — чтобы добавить задачу или проверить срок, не открывая приложение

  • Нативные уведомления с кнопками «Готово»/«Отложить на 1 час» прямо с экрана блокировки

  • Кнопка «Назад» закрывает открытое модальное окно или панель — именно так, как это должно работать

  • Пока не в Google Play — это запланировано; подробнее в разделе «Как получить приложения»

Windows-приложение — основной «приложение для людей»

  • Нативное приложение на базе Tauri, оборачивает ту же веб-сборку без изменений, со встроенным хостом синхронизации NyxDB (см. раздел «Синхронизация»)

  • Нативные уведомления Windows с возможностью открыть приложение по клику и работающими запланированными напоминаниями (не просто запасной вариант через браузерное уведомление)

  • Нативные диалоги «Сохранить как» для резервного копирования и экспорта вместо тихой загрузки файла браузером внутри WebView

Небольшой размер — намеренно. Android- и Windows-приложения прошли многократные чистки именно для того, чтобы оставаться лёгкими: удалён мёртвый код, убраны неиспользуемые зависимости, встроенный хост синхронизации в Windows-приложении заменён на специально написанный сервер (NyxDB) вместо универсальной СУБД, что позволило сократить установщик примерно в 10 раз. Проверка размера бандла входит в процедуру каждого релиза. Это не случайность: каждые несколько релизов специально проводится проход по обслуживанию, чтобы выявить раздутие и регрессии до того, как они попадут в выпуск (см. docs/MAINTENANCE.md).

Данные, резервное копирование и целостность

  • Полный процесс резервного копирования (с выбором области) и восстановления, экспорт в JSON и CSV

  • Инструмент проверки и восстановления базы данных (Check Database / Repair Issues), который находит и исправляет осиротевшие задачи и проекты, недопустимые ссылки на статусы и неразрешённые конфликты синхронизации

  • Предупреждения о нехватке места при использовании более 80% с подсказками по освобождению, db.compact() привязан к реальному действию «Оптимизировать хранилище»

Внешний вид и доступность

  • Светлая / Тёмная / Системная тема, переключатель высокой контрастности, переключатель уменьшения анимации, который реально читается каждой анимацией в приложении

  • Полноценное управление с клавиатуры: захват фокуса в каждом модальном окне, видимые рамки фокуса, панель горячих клавиш, Escape закрывает всё

  • Контрастность проверена и приведена в соответствие со стандартом WCAG AA по всей палитре

Платного уровня нет, ни одна функция никогда не будет спрятана за ним — подробнее в манифесте docs/DECISIONS.md.

Как получить приложения

Загрузите последний установщик для Windows и APK для Android со страницы GitHub Releases. Операционная система предупредит вас перед установкой (неподписанное приложение, не из Google Play) — это ожидаемо и не является тревожным сигналом о качестве кода; настройка подписи и публикации — отслеживаемая цель (см. раздел «Open» в docs/ROADMAP.md — листинг в Google Play готов и ожидает проверки Google; заявка на подпись Windows подана в SignPath Foundation в рамках программы для open-source проектов и была возвращена с просьбой повторно обратиться после набора публичной активности, см. раздел «Windows code signing» в docs/TECH.md). Главное — скачивайте только со страницы Releases этого репозитория, а не с зеркал.

Windows — основное приложение для повседневного использования: поставляется со встроенным сервером синхронизации, ничего лишнего устанавливать не нужно, автоматически проверяет обновления (подписанный установщик, журнал изменений в приложении, явный запрос на перезапуск). Android сегодня работает через установку APK в обход магазина, после публикации в Play Store будет обновляться там же автоматически. Веб-сборка (npm run dev) — это среда для разработки и тестирования, а не основной способ использования приложения.

Сделано как настоящий продукт, а не прототип

Каждый релиз: production-сборка без предупреждений, чистая проверка типов, полный прогон тестов, ручная проверка светлой/тёмной темы — всё контролируется CI, а каждые несколько релизов проводится проход по обслуживанию для выявления мёртвого кода и регрессий (см. docs/MAINTENANCE.md). Перед открытым выходом был выполнен полный аудит безопасности и очистка истории git от учётных данных (см. раздел «Public release» в docs/DECISIONS.md).

Быстрый старт

Все описанные ниже действия выполняются в терминале — GUI-установщика для разработки нет. При желании можно использовать графический клиент Git/npm, но для каждого шага есть эквивалентная команда в командной строке, так что ничего специального не требуется.

Что нужно установить в зависимости от целевой платформы:

Цель Требования

Веб-сборка

Node.js 20+ (включает npm)

Android-сборка

Всё выше + Android Studio (JDK поставляется вместе с ним)

Windows desktop-сборка

Всё выше + Rust + предварительные требования Tauri

Веб-приложение (полностью работает офлайн, без дополнительной настройки):

cd offlog-app
npm install
npm run dev              # http://localhost:5173

Чтобы включить синхронизацию, создайте файл offlog-app/.env.local:

VITE_SYNC_URL=http://192.168.x.x:5984/offlog
VITE_SYNC_USER=youruser
VITE_SYNC_PASS=yourpass

Сборка для веба (npm run build, результат в offlog-app/dist/) или Android (npx cap sync android, затем сборка через Android Studio или Gradle).

Windows desktop-приложение — соседний проект в папке offlog-desktop/ (Tauri), оборачивает ту же веб-сборку и встраивает хост синхронизации NyxDB (полностью автономен — отдельный сервер не нужен даже при разработке):

cd offlog-desktop
cargo tauri dev

Полные шаги сборки и деплоя, детали окружения и полное описание архитектуры (включая точный принцип работы обнаружения через mDNS и handshake сопряжения) — в docs/TECH.md.

Документация

Всё, что не поместилось в этот обзор, находится в папке docs/:

Документ Содержание

docs/DECISIONS.md

Манифест, открытые вопросы, требующие внешней оценки, и обоснование неочевидных решений

docs/TECH.md

Архитектура, модель данных, внутренняя работа синхронизации, токены тем, процесс релиза и подписи

docs/ROADMAP.md

Текущий статус и запланированная работа

docs/CHANGELOG.md

Подробная история последних версий

docs/archive/changelog-archive.md

Более ранние релизы, по одной строке каждый, плюс полный журнал проходов по обслуживанию

docs/archive/roadmap-archive.md

История выполненных, отклонённых и отложенных пунктов роадмапа

docs/BRAND.md

Слоган, описание, голос бренда, визуальная идентичность, условия использования торговой марки и форков

CLAUDE.md

Руководство для участников и правила для людей и AI-ассистентов

Участие в разработке

Создавался примерно за месяц, в одиночку — Claude занимался непосредственным написанием кода, тогда как все идеи, решения по интерфейсу и циклы тестирования шли от одного владельца, выступавшего в роли продакт-менеджера и QA. Кодовая база намеренно задокументирована (CLAUDE.md + docs/) именно для того, чтобы AI-ассистент (или человек) мог подхватить её таким же образом для форка.

Есть реальный, честный список того, что помогло бы проекту двигаться вперёд — подробности о настройке и механике PR в CONTRIBUTING.md, но если коротко, наиболее ценный вклад прямо сейчас:

  • Настоящая подпись кода (Windows) и публикация в Google Play — сам процесс сборки и релиза уже автоматизирован (см. ниже), не хватает только платных учётных данных и человека, готового взять на себя эти расходы и процесс

  • iOS-сборка — у автора сейчас нет ресурсов открыть это направление в одиночку, поэтому оно полностью открыто для того, кто захочет этим заняться

  • Общие идеи, исправления и код-ревью — если что-то кажется более простым, безопасным или лучше структурированным, такая обратная связь по-настоящему приветствуется, а не просто принимается

Кодовая база намеренно структурирована для форков и легко читается AI: CLAUDE.md документирует инварианты, которые ассистент (или человек) должен знать перед изменением db.ts, системы тем или кода Android-платформы.

Лицензия

MIT — см. LICENSE.

© 2026 meganuke