OBS Projects Plus
pendingby Park Pavel
Forked from obsmd-projects/obsidian-projects
Project management with visual calendar, timeline, multi-day events, boards, tables and galleries.
OBS Projects Plus
Зачем этот плагин?
Obsidian хранит всё в обычных Markdown-файлах. Это удобно для текста, но когда заметок становится десятки или сотни — сложно понять, что и в каком состоянии.
Projects Plus превращает папку с заметками в управляемый проект: вы видите все задачи на канбан-доске, все события на календаре, все карточки в галерее — и всё это без экспорта, без облака, прямо в вашем хранилище.
Кому подойдёт
- Контент-менеджерам — отслеживать статус публикаций в таблице и на доске
- Исследователям — организовать источники, заметки и дедлайны с фильтрацией
- Планировщикам — видеть задачи на timeline-календаре с мультидневными событиями
- Всем, кто ведёт базу знаний — когда нужен визуальный обзор, а не список файлов
Как это работает
- Вы указываете папку, тег или Dataview-запрос — это "проект"
- Плагин собирает все подходящие заметки и читает их
frontmatter(YAML-шапка) - Вы выбираете представление — таблица, доска, календарь или галерея
- Редактируете поля прямо в интерфейсе — плагин записывает изменения обратно в файл
Данные остаются в ваших файлах. Плагин не создаёт собственную базу данных.
📸 Галерея
✨ Возможности
| Представление | Что делает |
|---|---|
| Таблица | Редактирование с сортировкой, фильтрацией, навигацией по ячейкам |
| Доска | Kanban — перетаскивание карточек, закрепление статусов (persist), Ctrl+Scroll zoom (25–200%), сворачивание колонок |
| Календарь | Timeline 07:00–22:00, мульти-дневные бары, 5 уровней зума (Год → День) |
| Галерея | Карточки с обложками и полями из frontmatter |
Календарь — полноценный планировщик: startDate, endDate, startTime, endTime, date (дата создания заметки), поле color для цветовой кодировки, бесконечный скролл, мобильные жесты (свайп, pinch-to-zoom, двойной тап для создания заметки).
Agenda 2.0 — боковая панель календаря с конструктором списков: 42 оператора фильтрации, вложенные AND/OR группы, формулы дат (today, sow, eom, today+1w), два режима — визуальный и Advanced (формулы в стиле Google Sheets).
Доска (Board) — закрепление статусов (persist): колонки остаются видимыми даже без записей, визуальные индикаторы, Ctrl+Scroll zoom (25–200%), адаптивная вёрстка, создание заметок с наследованием фильтров.
Три источника данных: папка, тег, Dataview-запрос. Шаблоны заметок, автосохранение, локализация (RU, EN, UA, ZH-CN).
Подробнее о горячих клавишах, жестах, шаблонах и настройках — в Руководстве пользователя.
📥 Установка
BRAT (рекомендуется)
- Установите BRAT
- В настройках BRAT добавьте:
ParkPavel/obs-projects-plus - Включите плагин
Ручная установка
- Скачайте
main.js,manifest.json,styles.cssиз Releases - Поместите в
.obsidian/plugins/obs-projects-plus/ - Перезапустите Obsidian → Включите плагин
🚀 Быстрый старт
- При первом включении плагин создаёт демо-проект (35+ заметок, 6 представлений)
Ctrl/Cmd+P→ "Projects Plus: Show projects plus"- Попробуйте переключать виды: Таблица → Доска → Календарь → Галерея
- Создайте свой проект:
Ctrl/Cmd+P→ "Projects Plus: Create Project"
# Пример frontmatter для заметки проекта
---
title: Моя задача
status: todo
priority: high
startDate: 2026-02-15
date: 2026-02-15
endDate: 2026-02-20
startTime: "09:00"
endTime: "18:00"
color: "#4CAF50"
tags: [проект, важное]
---
🗺️ Roadmap
| Приоритет | Функция | Версия | Статус |
|---|---|---|---|
| ✅ | Agenda 2.0 & Filter System | v3.0.5 | Выпущено |
| ✅ | Obsidian Guidelines Compliance | v3.0.6 | Выпущено |
| ✅ | Оптимизация + Теги + Поля дат | v3.0.7 | Выпущено |
| ✅ | Board UX: persist, zoom, collapse | v3.0.8 | Выпущено |
| ✅ | Унификация фильтров + Instant mode | v3.0.9 | Выпущено |
| ✅ | Mobile Feature Parity | v3.0.10 | Выпущено |
| ✅ | Deep Mobile Adaptation | v3.1.0 | Выпущено |
| ✅ | Drag & Drop 2.0 | v3.2.0 | Выпущено |
| 🥇 | Database View | v3.3.0 | Планируется |
| 🥈 | Calendar Sync (iCal, Google, CalDAV) | v3.4.0 | Планируется |
🛠️ Для разработчиков
Известные проблемы
| # | Проблема | Приоритет | Комментарий |
|---|---|---|---|
| 1 | Дублирование логики команд (main.ts + CommandManager) | P2 | Риск рассогласования при добавлении новых команд |
| 2 | Fire-and-forget void в ViewApi записи | P2 | Ошибки I/O при записи проглатываются без уведомления пользователя |
Custom View API (экспериментальное)
Плагин поддерживает регистрацию пользовательских представлений от сторонних плагинов. Это наследие оригинального Obsidian Projects (Marcus Olsson).
Как это работает: при загрузке Projects Plus перебирает все включённые плагины и ищет метод onRegisterProjectView. Если метод найден — плагин вызывает его и регистрирует возвращённый view рядом со встроенными (Table, Board, Calendar, Gallery).
// В вашем плагине (plugin.ts):
import { Plugin } from "obsidian";
import type { ProjectView, ProjectViewProps, DataQueryResult } from "obsidian-projects-types";
class MyCustomView extends ProjectView {
getViewType(): string { return "my-view"; }
getDisplayName(): string { return "My View"; }
getIcon(): string { return "layout-grid"; }
onOpen({ contentEl }: ProjectViewProps) {
contentEl.createEl("h2", { text: "My Custom View" });
}
onData({ data }: DataQueryResult) {
// data.fields — схема, data.records — заметки
}
onClose() { /* cleanup */ }
}
export default class MyPlugin extends Plugin {
onRegisterProjectView = () => new MyCustomView();
}
Установите типы: npm install --save-dev obsidian-projects-types
⚠️ API экспериментальное и может измениться без предупреждения. Подробнее: obsidian-projects-types/README
📣 Голосование контрибьюторов: Svelte 3 → 5
Svelte — компилятор, не runtime. В main.js нет Svelte-кода. CVE компилятора не затрагивают плагин, Obsidian не проверяет версию Svelte.
За: runes DX, экосистема, контрибьюторы. Против: ~50+ файлов, ломающее API, нулевое влияние на пользователя.
Проголосовать или открыть Issue.
Разработка
git clone https://github.com/ParkPavel/obs-projects-plus.git
cd obs-projects-plus
npm ci
npm run dev # esbuild watch mode
npm run build # tsc + esbuild production
npm run test # Jest (375 тестов, 21 suite)
npm run lint # ESLint + eslint-plugin-obsidianmd (23 правила)
npm run format # Prettier
Подробнее: CONTRIBUTING.md • CODE_STANDARDS.md
📖 Документация
| Документ | Описание |
|---|---|
| Руководство пользователя (RU) | Горячие клавиши, жесты, шаблоны, настройки |
| User Guide (EN) | Full instructions in English |
| Custom View API | Регистрация своих view из других плагинов |
| История версий | Все релизы |
| CHANGELOG | Keep a Changelog формат |
| Архитектура фильтров | Спецификация движка |
| Drag & Drop | Спецификация для контрибьюторов |
| Database View | Концептуальный документ |
💬 Обратная связь
- Telegram: @parkpavel_chigon
- GitHub Issues: Сообщить о проблеме
- GitHub Discussions: Обсуждения
🙏 Благодарности
Форк оригинального Obsidian Projects от Marcus Olsson.
Текущий мейнтейнер: Park Pavel
📄 Лицензия
Apache License 2.0 © 2024–2026 Park Pavel
Сделано с ❤️ для сообщества Obsidian
⭐ Star • 🐛 Issues • 💬 Telegram
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.