Десктопный таск-менеджер для Windows: kanban-доски, подзадачи как полноценные задачи, календарь, focus-таймер и rich-описания с картинками и таблицами.
Без облака, без аккаунтов, без подписки — данные лежат в SQLite у тебя на диске.
Полноценный десктоп-таск-менеджер уровня Linear / Todoist / Things — но локальный. Ни одного сетевого запроса: ни телеметрии, ни синхронизации, ни аккаунта.
- 🗂️ Проекты с настраиваемыми kanban-досками — drag-and-drop карточек и самих колонок, дефолтный шаблон
Backlog · В работе · Готово - 🌳 Подзадачи — это полноценные задачи со своим описанием, приоритетом, дедлайном, тегами, вложениями и активити-логом. Прогресс виден на родительской карточке, при 100% — карточка зеленеет
- 📝 Rich-описания — картинки прямо в тексте (Ctrl+V скриншота), GFM-таблицы, чеклисты, код-блоки. Хранится markdown, поэтому поиск и экспорт работают по описанию
- 🖼️ Просмотр вложений внутри приложения — зум и панорама для картинок, встроенный PDF-вьюер, плееры для видео и аудио, предпросмотр текста
- 📅 Календарь месяц/неделя с drag-and-drop переноса дедлайнов и панелью задач без срока
- ⚡ Quick Add (
Ctrl+N) с разбором строки:купить молоко завтра 18:00 #дом !срочно - 📥 Smart Lists — Сегодня (вместе с просрочкой) и Предстоящее, поверх всех проектов
- 🔁 Повторяющиеся задачи — ежедневно / будни / неделя / месяц
- 🍅 Focus-таймер (Pomodoro) с привязкой к задаче и прогрессом в заголовке окна
- 🎨 Кастомная тема — светлая и тёмная, 8 пресетов акцента + free-form HSL picker
- 🔍 Полнотекстовый поиск (SQLite FTS5) через
Ctrl+K— по заголовкам и описаниям - 📤 JSON-экспорт проекта и 💾 ежедневный бэкап БД (хранится 7 дней)
| Календарь с переносом дедлайнов | Сегодня, включая просрочку |
|---|---|
![]() |
![]() |
| Разбор строки в Quick Add | Полнотекстовый поиск через Ctrl+K |
|---|---|
![]() |
![]() |
Скачать готовый билд из Releases:
| Файл | Размер | Описание |
|---|---|---|
Taskiii-1.3.0-x64.exe |
104 MB | NSIS-инсталлятор (рекомендуется) |
Taskiii-1.3.0-portable.exe |
104 MB | Portable single-exe, без установки |
Taskiii-1.3.0-x64.zip |
140 MB | Распаковать и запустить |
Про предупреждение Windows. Билды не подписаны сертификатом, поэтому при первом запуске SmartScreen скажет «Неизвестный издатель». Нажмите «Подробнее» → «Выполнить в любом случае». Подпись стоит денег и для локального приложения без сети ничего не проверяет по сути — исходники здесь целиком, можно собрать самому (
pnpm build:win).
Данные хранятся в
%APPDATA%\taskflow\независимо от способа установки, так что переустановка и переход с portable на инсталлятор ничего не теряют.
Что изменилось в версии — в CHANGELOG.md.
Требуется Node.js ≥ 22.13 и pnpm 11 (этого требует сам pnpm — версия зафиксирована в packageManager). На Windows нужны Visual Studio Build Tools для native-модулей (better-sqlite3, sharp).
# Клонировать
git clone https://github.com/Uronakiii/taskiii.git
cd taskiii
# Установить зависимости (postinstall пересобирает native-модули под Electron)
pnpm install
# Запустить dev-режим (HMR через electron-vite)
pnpm dev
# Прогнать тесты
pnpm test
# Собрать production-бандл в out/
pnpm build
# Собрать инсталляторы Windows в release/
pnpm build:winmain— стабильно:pnpm typecheckиpnpm testзелёные- CI на GitHub Actions прогоняет typecheck и тесты на каждый push и PR в
main feat/*— фичи,chore/*— обслуживание, вливаются через PR- Дизайн-документы больших фич лежат в
docs/superpowers/specs/— там зафиксированы развилки и критерии приёмки до начала кода - Скриншоты в README пересобираются одной командой:
pnpm build && pnpm screenshotsscripts/screenshots.mjs поднимает собранное приложение с подменённым appData, засеивает демо-проекты через тот же IPC, что и UI, снимает кадры по CDP и удаляет временную базу. Реальная база не открывается — её контрольная сумма сверяется до и после прогона, расхождение валит скрипт.
┌──────────────────────────────────────────────────────────────┐
│ Main process (Node.js + TypeScript) │
│ ───────────────────────────────────── │
│ • IPC handlers с zod-валидацией │
│ • Services (Project / Task / Tag / Attachment / …) │
│ • Repository слой (better-sqlite3) │
│ • taskiii:// — привилегированная схема для вложений │
│ • Файловое хранилище (FS для >5MB) │
│ • Ежедневный snapshot БД │
└────────────────────┬─────────────────────────────────────────┘
│ contextBridge (preload.ts, sandbox: true)
│ window.api.invoke<Channel>(input)
▼
┌──────────────────────────────────────────────────────────────┐
│ Renderer process (Chromium + React) │
│ ───────────────────────────────────── │
│ • React 18 + Vite + Tailwind │
│ • Zustand (UI state) + TanStack Query (cache) │
│ • @dnd-kit (kanban + calendar drag) │
│ • Tiptap + marked/turndown (markdown ↔ HTML) │
│ • cmdk (палитра Ctrl+K) │
│ • Framer Motion (drawer) │
└──────────────────────────────────────────────────────────────┘
Описание задачи хранится как markdown в tasks.description_md: так его напрямую индексирует FTS5 и забирает экспорт. Редактор — Tiptap, поэтому на каждом открытии и сохранении описание проходит через renderer/src/lib/markdown.ts (marked в одну сторону, turndown + GFM в другую).
Байты вложений не ходят через IPC как base64: renderer получает taskiii://attachment/<id>, а main отдаёт их из BLOB или с диска. Один и тот же URL работает и для <img> в описании, и для встроенного PDF-вьюера, и для fetch текстового предпросмотра.
| Слой | Технология |
|---|---|
| Оболочка | Electron 33 + electron-vite |
| UI | React 18, TypeScript 5, Tailwind, shadcn-style |
| State | Zustand + TanStack Query |
| DnD | @dnd-kit |
| Редактор | Tiptap + ProseMirror (Image, Link, Table) |
| Markdown | marked + turndown + turndown-plugin-gfm |
| БД | SQLite (better-sqlite3) + миграции из кода |
| Картинки | sharp (генерация thumbnail) |
| Контракты | zod (одна правда для main и renderer) |
| Тесты | Vitest |
| Сборка | electron-builder (NSIS / portable / zip) |
| Действие | Шорткат |
|---|---|
| Quick Add | Ctrl + N |
| Командная палитра / поиск | Ctrl + K |
| Помощь / справка | ? |
| Переключить тему | Ctrl + Shift + T |
| Закрыть drawer / диалог | Esc |
| Новая задача в первой колонке | N |
| Отправить комментарий | Ctrl + Enter |
| Вставить скриншот в описание | Ctrl + V |
| Листать вложения во вьюере | ← / → |
src/
├── main/ # Electron main process
│ ├── ipc/ # IPC хендлеры (тонкие — валидация + диспетч)
│ ├── services/ # Бизнес-логика (Project, Task, Attachment, ...)
│ ├── db/ # Schema, миграции, seed
│ ├── lib/ # paths, errors, id, recurrence
│ ├── protocol.ts # taskiii:// — отдача байтов вложений
│ └── index.ts # Window + жизненный цикл
├── preload/ # contextBridge bridge
├── renderer/ # React app
│ └── src/
│ ├── components/
│ │ ├── board/ # Kanban доска
│ │ ├── calendar/ # Calendar view
│ │ ├── task-detail/ # Drawer, редактор, тулбар, вьюер вложений
│ │ ├── sidebar/
│ │ ├── smartlist/ # Today / Upcoming
│ │ ├── quick-add/ # Quick Add modal
│ │ ├── pomodoro/
│ │ ├── theme/
│ │ ├── command-palette/
│ │ └── ui/ # Shared UI primitives
│ ├── hooks/ # useShortcuts, ...
│ ├── stores/ # Zustand
│ ├── lib/ # api, queries, markdown, quick-add-parse, nlp-date, export
│ └── App.tsx
└── shared/
└── ipc-contracts.ts # zod-схемы + типы IPC
resources/ # Иконка и логотип
docs/
├── screenshots/ # Скриншоты для README
├── superpowers/specs/ # Дизайн-документы фич
├── research/ # Research notes
└── qa/ # Manual QA checklist
tests/ # Vitest unit tests
electron.vite.config.ts
electron-builder.yml
pnpm test # один прогон
pnpm test:watch # watch-режим
pnpm typecheck # tsc по main + renderer, проходит без ошибок88 unit-тестов. Покрыто: markdown round-trip (таблицы, картинки, чеклисты, вложенные списки), разбор строки Quick Add (даты, время, теги, приоритеты), NLP-парсер русских дат, правила повторов, форматирование дат.
QA checklist для ручного smoke-теста — в docs/qa/CHECKLIST.md.
- ❌ Облака нет, аналитики нет, телеметрии нет
- ✅ Всё лежит локально в
%APPDATA%\taskflow\ - ✅ Ежедневный snapshot БД в
%APPDATA%\taskflow\backups\(последние 7) - ✅
sandbox: true,contextIsolation: true,nodeIntegration: false - ✅ CSP запрещает inline-script
- ✅ В ОС уходят только
http/https/mailto—blob:,data:иfile:наружу не передаются - ✅
taskiii://отдаёт только вложения по id из БД: путь к файлу никогда не берётся из URL
MIT — см. LICENSE.
Taskiii · by Ilya Usachev
Сделано с ☕ и упорством





