DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
Kanvana, a local first personal kanban board with swim lanes, relations, sub-tasks, no frameworks pure html, css and vanilla javascript. Unlimited Cards and Boards
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗kanvana == "Kanban" + "Nirvana" # smooth flow
Transform your productivity with a sleek, local-first Kanban board. No servers, no tracking—just pure efficiency in your browser.
A beautiful, modern-designed personal, flexible Kanban board + Time Tracker that runs entirely in your browser. No backend, no cloud, no data tracking. Everything stays local with browser IndexedDB persistence. Perfect for personal task management, work tracking, and staying organized.
Experience it firsthand: Try the Live Demo
Log time against customers and projects on a dedicated page, opened from the board menu:
930, 90m or 1.5Break complex tasks into smaller, trackable steps without leaving the board:
completed/total Done count that turns green when everything is doneSub-tasks are saved with the parent task and survive export/import round-trips. Existing tasks default to zero sub-tasks with no migration needed.
Link tasks together to communicate dependencies and connections:
Relationships are bidirectional: adding one automatically creates the inverse on the linked task, and removing it cleans up both sides. Search for tasks by short ID (e.g. #ae2ry) or title, view active relationships as color-coded badges in the task modal, and click any badge ID to jump straight to that task.
Organize your board into horizontal swim lanes for a powerful two-dimensional view of your workflow:
Configure swim lanes in Settings or use the quick-access toggle in the board controls menu. Lane order is customizable via drag-and-drop in Settings.
Edit on your phone, see it on your laptop — within seconds. Kanvana uses event-sourced sync: every change is a domain event ordered by a Hybrid Logical Clock (HLC), so independent edits across devices converge without overwriting each other. Tasks, columns, and labels in your browser are projections rebuilt from the event stream.
Live ● (synced), Syncing… (N) (events draining), ⚠ N unsynced (retrying), or Offline (no network / signed out).http:// or https:// link into a task description and it becomes a clickable link on the card — opens in a new tab, no page refresh. A live link preview strip also appears below the description field in the task modal as you type, so you can click URLs without saving firstCtrl+B opens Manage Boards, Escape closes active modals and menus, arrow keys navigate board and label lists, and Enter activates focused choices. Shortcuts are form-safe, so typing in inputs does not accidentally trigger global actions. See the full keyboard shortcuts table.Your data is stored securely in your browser's IndexedDB. It persists across sessions and page reloads. For extra safety, use the built-in export feature to save backups to your preferred cloud storage.
If you opt into Real-Time Multi-Device Sync, your event stream is also synced to a PocketBase backend so the same boards stay in step across your devices. Sync is entirely optional — without an account, nothing leaves your browser.
Get up and running in minutes!
The repository includes a pre-built static site in dist/. Simply upload it to any web host.
dist/ folder.Clone the repo:
git clone https://github.com/mdiener21/kanvana.git
cd kanvana
Install dependencies:
cd client
npm install
Start the dev server:
cd client
npm run dev
The app will open at http://localhost:3000.
cd client
npm run build
Built files are in client/dist/.
cd client
npm run preview
Releases are fully automated via GitHub Actions — no local commands needed.
Step 1 — Keep CHANGELOG.md up to date during development
As you merge features and fixes, add bullet points under ## [Unreleased] in CHANGELOG.md. Use the standard sections:
## [Unreleased]
### Added
- Some new feature
### Fixed
- Some bug fix
This is a normal commit — not a release trigger.
Step 2 — Trigger "Generate Release" on GitHub
patch (bug fixes), minor (new features), or major (breaking changes)The workflow runs in two jobs:
package.json, promotes ## [Unreleased] to a dated release section in CHANGELOG.md, updates the README version badge, and opens a pull request. The PR body clearly shows whether tests passed or were skipped.Step 3 — Review and merge the PR
Check that the changelog and version look correct, then merge the pull request. If the PR body shows tests were skipped, decide whether that is acceptable before merging.
Step 4 — Done
Merging triggers the Publish Release workflow automatically. It reads the version from package.json, creates and pushes the git tag, and publishes the GitHub Release with the changelog notes. No further action needed.
If your repo blocks Actions from creating PRs, enable: Settings → Actions → General → Workflow permissions → Allow GitHub Actions to create and approve pull requests.
This project uses a four-layer test stack:
Vitest for pure unit tests in tests/unit/Vitest + @testing-library/dom for DOM integration tests in tests/dom/MSW for mocked API behavior shared by Vitest suites from tests/mocks/Playwright for end-to-end and visual/accessibility smoke coverage in tests/e2e/Run the full automated test stack:
npm test
Run only the unit tests:
npm run test:unit
Run only the DOM integration tests:
npm run test:dom
Run only the Playwright E2E tests:
npm run test:e2e
Run only the create-task E2E tests (tests/e2e/create-task.spec.ts):
npm run test:e2e -- tests/e2e/create-task.spec.ts
The detailed strategy, folder layout, and naming convention live in docs/testing-strategy.md.
Dive deeper with our comprehensive docs: View Documentation
We love contributions! Whether it's bug fixes, features, or docs—every star and fork helps grow the community.
Licensed under the MIT License. See LICENSE.md for details.
Made with ❤️ for productivity enthusiasts. Star us on GitHub to stay updated!