README file from
GithubKanban Bases View CL Plugin for Obsidian
A customized kanban-style drag-and-drop custom view for Obsidian Bases that allows you to organize your notes into columns based on any property.
This is Christian Lempa's customized edition of Kanban Bases View. It uses a unique plugin ID (kanban-bases-view-cl) and Bases view type (kanban-view-cl) so it can coexist with other kanban Bases plugins.
Custom features
- Image gallery support: The image property supports list properties containing multiple images.
- Per-group column collapse: Collapse or expand individual columns/groups.
- Configurable column widths: Choose between small, medium, and large column widths.
Demo
Features
- Dynamic Column Generation: Select any property from your base to generate kanban columns automatically
- Drag and Drop: Move cards between columns with smooth animations
- Quick Add Buttons: Create new cards directly from a column's
+button with the column value, and swimlane value when used, filled in automatically - Column Reordering: Drag columns by their handle (⋮⋮) to reorder them to your preference
- Swimlanes: Optionally group the board into horizontal lanes using a second property
- Column Color Themes: Assign colors to columns using the color picker button for visual categorization
- Column Order Persistence: Your column order is saved per property and persists across sessions
- Property Selection: Choose which property determines your columns (e.g., "Status", "Priority", "Category")
- Uncategorized Entries: Notes without a value for the selected property are automatically grouped in an "Uncategorized" column
- Property Display: Selected properties are shown on each card for at-a-glance context
- Custom Card Titles: Display a frontmatter property as the card title instead of the file name — useful when files share a common name (e.g.,
README.md) across folders - Cover Images: Show a cover image on each card by picking a frontmatter property — mirrors Obsidian's native Cards view Image property with matching fit (cover/contain) and aspect-ratio controls, so one frontmatter field works for both views
- Property Word Wrap: Toggle property text wrapping on cards to handle long property values
- Click to Open: Click any card to open the corresponding note (Cmd/Ctrl+click to open in new tab)
- Visual Feedback: Clear visual indicators during drag operations
- Responsive Design: Works well on different screen sizes
Installation
Manual Installation
- Download the latest release from the Releases page
- Extract the plugin folder to your vault's
.obsidian/plugins/directory - Reload Obsidian
- Enable the plugin in Settings → Community plugins
Development Installation
-
Clone this repository:
git clone https://github.com/ChristianLempa/obsidian-bases-kanban.git cd obsidian-bases-kanban -
Install dependencies:
npm install -
Build the plugin:
npm run build -
Link or copy the plugin folder to your vault's
.obsidian/plugins/directory
Usage
- Create or open a Base in Obsidian
- Add a view and select "Kanban" as the view type
- Select the property you want to use for columns (e.g., "Status") in the "Group by" option
- Your notes will be automatically organized into columns based on the selected property's values
- Drag cards between columns to update the property value
- Optionally, set "Add card to column folder" to a folder path — this enables a
+button in each column header for quickly creating cards with that column's value pre-filled - Click any card to open the corresponding note (Cmd/Ctrl+click to open in new tab)
- Drag columns by their handle (⋮⋮) to reorder them - your preferred order will be saved
- Optionally, select a property in "Swimlane by" to split the board into horizontal lanes
- Optionally, select a property in "Card title property" to display that property's value as each card's title instead of the file name
Example
If your base has a "Status" property with values "To Do", "Doing", and "Done":
- Select "Status" in the "Group by" dropdown
- Three columns will appear: "To Do", "Doing", and "Done" (plus an "Uncategorized" column for notes without a status)
- Drag cards between columns to change their status
- If "Add card to column folder" is configured, click the
+button to create a new note with that status in that folder - Click any card to open the note (Cmd/Ctrl+click to open in new tab)
- Drag columns by their handle to reorder them - your order preference will be remembered
If your base also has a "Priority" property with values "High", "Medium", and "Low":
- Select "Status" in the "Group by" dropdown
- Select "Priority" in the "Swimlane by" dropdown
- The board will render one horizontal lane for each priority, and each lane will contain the same status columns
- Drag cards sideways to change their status, or drag them to another lane to change their priority
- Click a
+button inside a lane to create a new note with both its status and priority filled in - Drag lane headers to reorder lanes, use the lane toggle to collapse or expand a lane, and drag any column header to reorder that column across all lanes
- Notes without a value for the swimlane property appear in an "Uncategorized" lane
- Leave "Swimlane by" unset to use the original single-axis kanban layout
If your project folders each contain a README.md with a title property:
- Select
titlein the "Card title property" dropdown - Cards will display the
titleproperty value instead of "README" - If a note is missing the property, the file name is used as a fallback
If your notes have a frontmatter property pointing at a cover image (e.g., cover: "[[book-cover.jpg]]" or cover: "https://example.com/poster.jpg"):
- Select that property in the "Image property" dropdown
- Each card gets a cover image above the title
- Use "Image fit" to choose between Cover (crop to fill) and Contain (letterbox)
- Drag the "Image aspect ratio" slider to size the cover — wide banner on the left, tall portrait on the right
- The same property value also works in Obsidian's built-in Cards view, so the two views stay in sync
Development
Prerequisites
- Node.js (v24)
- npm
Building
npm run build
Development Mode
npm run dev
This will watch for changes and rebuild automatically.
Testing
npm test
Type Checking
npm run typecheck
Linting and Formatting
This project uses ESLint for linting and Biome for formatting. They are intentionally kept separate.
Lint (reports rule violations):
npm run lint
Lint with auto-fix:
npm run lint:fix
Format (rewrites files):
npm run format
Check formatting (exits non-zero if unformatted; used by CI and the pre-commit hook):
npm run format:check
Technical notes
- The plugin uses the
.obk-CSS class prefix (Obsidian Bases Kanban) for all view UI classes to avoid collisions with other plugins and themes.
Releasing
Creating a Release
-
Update version: Manually update the version in
manifest.jsonandpackage.jsonfollowing Semantic Versioning. -
Update versions.json: Add an entry mapping the new version to the correct
minAppVersioninversions.json. -
Update CHANGELOG.md: Promote release notes into a section matching the version, for example
## 0.0.1. -
Run validation:
npm run ci -
Create and push a matching tag from
mainwithout a leadingv:git tag 0.0.1 git push origin 0.0.1The release workflow builds the plugin, generates release notes from
CHANGELOG.md, and uploadsmain.js,manifest.json, andstyles.cssas individual GitHub release assets. -
Submit to Obsidian Community Plugins (first release only):
- Follow the Obsidian plugin submission guidelines
- Submit a PR to the obsidian-releases repository
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built with SortableJS for drag-and-drop functionality
- Inspired by the need for better task management in Obsidian Bases