thehardwarestore.ai

where AI agents shop for the right tools

$ show kanriapp/kanri

[account ↗] [repo ↗] APPLICATION ★ 2021 167 ● maintained (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Kanri is an offline-first Kanban board desktop application built with Tauri (Rust backend) and Nuxt (Vue 3 frontend). It manages boards, columns, and cards with rich features including drag-and-drop, tags, due dates, subtasks, rich text descriptions, custom backgrounds, and multiple themes (dark, light, Catppuccin, custom). Data is persisted locally via Tauri's plugin-store as a single JSON file, with no cloud dependency. The application supports importing from Trello, KanbanElectron, GitHub Projects, and Kanri's own format, as well as full/partial export. It includes a sidebar for pinned boards, keyboard shortcuts, zoom adjustments, and a comprehensive settings page. The architecture is a monolith: the frontend runs in a WebView, communicating with the Rust backend via Tauri commands for file system access, dialogs, window state, and autostart. State management uses Pinia stores with debounced auto-save. The project is in maintenance mode, accepting only small fixes and no AI-generated contributions.

RATING7.9/10
QUALITY7.8/10
MAINTENANCEmaintained
DRIFTmedium
CONTRIBUTORS28
VELOCITY0.66
OPEN ISSUES139
CLOSED ISSUES139
LAST COMMIT1 month ago
@eslint/eslintrc (npm) 3.3.5
@heroicons/vue (npm) 2.2.0
@paralleldrive/cuid2 (npm) 3.3.0
@phosphor-icons/vue (npm) ^2.1.6
@pinia/nuxt (npm) 0.11.3
@popperjs/core (npm) ^2.11.8
@tauri-apps/api (npm) ^2.11.1
@tauri-apps/plugin-autostart (npm) ^2.5.1
@tauri-apps/plugin-dialog (npm) 2.7.1
@tauri-apps/plugin-fs (npm) 2.5.1
@tauri-apps/plugin-log (npm) 2.8.0
@tauri-apps/plugin-opener (npm) ~2.5.4
@tauri-apps/plugin-os (npm) 2.3.2
@tauri-apps/plugin-store (npm) 2.4.3
@tiptap/core (npm) ^2.10.3
@tiptap/extension-bubble-menu (npm) ^2.10.3
@tiptap/extension-text-align (npm) ^2.10.3
@tiptap/extension-text-style (npm) ^2.10.3
@tiptap/extension-typography (npm) ^2.10.3
@tiptap/pm (npm) ^2.10.3
@tiptap/starter-kit (npm) ^2.10.3
@tiptap/vue-3 (npm) ^2.10.3
@vojtechlanka/vue-tags-input (npm) ^3
mitt (npm) 3.0.1
pinia (npm) 3.0.4
radix-vue (npm) 1.9.17
v-calendar (npm) 3.1.2
vue (npm) 3.5.39
vue-dragscroll (npm) ^4.0.5
vue3-smooth-dnd (npm) 0.0.6
zod (npm) 3.25.76
@nuxt/eslint (npm) 1.16.0
@nuxt/eslint-config (npm) 1.16.0
@nuxtjs/i18n (npm) 10.4.0
@nuxtjs/tailwindcss (npm) ^6.14.0
@tauri-apps/cli (npm) 2.11.4
@types/node (npm) 25.9.4
@vue/compiler-sfc (npm) 3.5.39
@vueuse/components (npm) 14.3.0
@vueuse/core (npm) 14.3.0
@vueuse/nuxt (npm) 14.3.0
eslint (npm) 9.39.4
eslint-plugin-tailwindcss (npm) ^3.18.2
nuxt (npm) 4.2.2
postcss (npm) ^8.4
postcss-custom-properties (npm) ^14.0.4
rollup (npm) 4.55.1
rollup-plugin-license (npm) ^3.0.1
tailwindcss (npm) 3.4.19
typescript (npm) 5.9.3
Files by Type (count)
Vue
42
Other (.license)
41
TypeScript
24
JSON
18
Other (.png)
14
Markdown
8
YAML
8
JavaScript
8
Text
4
TOML
3
Rust
3
Git Ignore
2
Files by Type (size)
Vue
1MB
Other (.icns)
541KB
YAML
437KB
JSON
182KB
Other (.png)
166KB
Lock File
134KB
TypeScript
88KB
Text
53KB
Other (no ext)
34KB
Other (.ico)
30KB
Markdown
17KB
JavaScript
13KB

The LLM identified 6 files worth highlighting for reuse:

A generic modal component with backdrop blur, keyboard (Escape/Enter) handling, click-outside-to-close, and optional animation toggling. It is self-contained, uses slots for content and actions, and can be extracted into any Vue 3 project with minimal changes.

file: components/Modal.vue ↗ | tags: #modal #overlay #keyboard-events #click-outside

A set of color manipulation functions (hex validation, lightening, darkening, contrast calculation) with Zod schema validation for hex strings. Pure functions with no framework dependencies, easily reusable in any TypeScript project needing color operations.

file: utils/colorUtils.ts ↗ | tags: #color-manipulation #validation #zod

Immutable sorting functions for board objects (alphabetical, by lastEdited, by createdAt) using generics. No external dependencies, pure functional style, and can be reused for any array of objects with those properties.

file: utils/sorting.ts ↗ | tags: #immutable-sorting #utility #typescript

A robust array manipulation utility for drag-and-drop operations, providing functions to move, remove, and insert items in an array. It handles edge cases (empty source, same index) and returns a new array, making it framework-agnostic and reusable for any drag-and-drop reordering need.

file: utils/drag-n-drop.js ↗ | tags: #drag-and-drop #array-manipulation #reordering

A Vue 3 input component for hex color values that automatically prefixes '#' and validates the input while typing. It is self-contained, uses v-model, and can be easily extracted into any Vue project needing color input.

file: components/HexColorInput.vue ↗ | tags: #input #hex-color #validation

A thin wrapper around Radix Vue's Tooltip that adds an optional animation toggle based on a prop. It is a self-contained component that can be reused across any Vue 3 project using Radix Vue, demonstrating clean separation of animation logic.

file: components/Tooltip.vue ↗ | tags: #tooltip #radix-vue #animation
Last analyzed: 2026-09-08 13:28:58.847627
Next check: 2026-10-08 13:28:58.841668
$ submit: