- TypeScript 74.4%
- Svelte 23.8%
- Go 0.9%
- CSS 0.5%
- Makefile 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Highlighted and pinned edges hard-coded `filter: brightness(1.5)`, which washed them out against the pale light-theme canvas — brightening a light color just makes it lighter. Introduce a `--edge-highlight-filter` CSS var: darken + saturate on light, brighten on dark (unchanged). styledEdges now references the var instead of the hard-coded brightness. Signed-off-by: Marcel M. Otte <marcel.otte@mmo.to> |
||
| .forgejo/workflows | ||
| .vscode | ||
| backend | ||
| CLA | ||
| desktop | ||
| docs | ||
| docs-site | ||
| e2e | ||
| src | ||
| static | ||
| .gitignore | ||
| .npmrc | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| Makefile | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
Juurakko
A browser-first application that visualizes issues and tickets from project management tools on an interactive infinite canvas with tree connections.
Load issues from your PM tool, see parent/child and blocking relationships as a visual graph, and edit issues directly from the canvas.
About the name
Juurakko is Finnish for the root system of a tree — the whole spreading, interwoven mass of roots a tree grows from (also rootstock / rhizome). It comes from the Finnish juuri ("root") plus the collective suffix -kko. The name suits a tool that lays your project out as a tree: rarely a single "root of all evil" but many roots, with every issue tracing back through its links to them.
How to say it (stress the first syllable)
- For humans: YOO-rah-ko — "YOO" long like moon, a rolled r if you can manage it, and hold the double k a beat longer (YOO-rahk-ko).
- In phonetic notation (IPA):
[ˈjuːrɑkːo]
Features
- Interactive canvas — pan, zoom, collapse/expand subtrees, search and filter
- Multiple PM tool plugins — Forgejo, GitHub, and more coming
- Write-back — edit status, assignee, title, description, labels, and comments directly on cards
- Link creation — create parent/child and blocking relationships between issues from the canvas
- Filters — per-dimension chip filters with fade/hide modes and boundary visualization
- Child progress — progress bars showing closed/total counts with optional recursive descendant counting
- Saved views — persist and switch between canvas configurations
- Appearance — light/dark/system themes with customizable colors
- Desktop app — native desktop application via Wails for Linux and Windows — double-click and go, no terminal needed
- Go backend — single binary with embedded frontend and CORS proxy, cross-compiled for Linux, Windows, and macOS
- Offline-capable — runs entirely in the browser with IndexedDB caching; backend only needed for CORS proxy
Quick Start
Desktop app (recommended)
Download the latest release for your platform from the Releases page:
- Linux —
juurakko-desktop-linux-amd64 - Windows —
juurakko-desktop-windows-amd64-installer.exe(installer) or.exe(portable)
Run the app, add a connection to your PM tool in settings, and load a project.
Development
npm install
npm run dev
Open http://localhost:5173, add a connection to your PM tool in settings, and load a project.
Build
Desktop app
Requires Wails CLI:
make desktop # build for current platform
make desktop-debug # build with devtools enabled
make release # Linux + Windows desktop apps + server binaries
Frontend only (static SPA)
npm run build
Output in build/ — serve with any static file server.
Server binary (Go backend)
make backend # current platform
Output in dist/. The binary embeds the frontend and serves it alongside a CORS proxy.
Tests
make test-unit # vitest (unit + component tests)
make test-e2e # playwright (end-to-end tests)
make test # both
Plugin Architecture
PM tool integrations are implemented as plugins conforming to the PMPlugin interface in src/lib/plugins/interface.ts. Each plugin handles authentication, issue fetching, write operations, and link management for its specific PM tool.
| Plugin | Status |
|---|---|
| Forgejo | Included |
| GitHub | Included |
| GitLab | Soon(tm) |
| Taiga | Soon(tm) |
| OpenProject | Soon(tm) |
| Redmine | Soon(tm) |
Tech Stack
- Svelte 5 + TypeScript
- @xyflow/svelte for the canvas
- dagre for graph layout
- Dexie for IndexedDB persistence
- Wails for the native desktop app
- Go for the backend and desktop proxy
- Vitest + Playwright for testing
Contributing
Contributions are welcome! Juurakko is open core, so contributing requires a DCO
sign-off and a one-time Contributor License Agreement (CLA) acceptance — both are quick.
See CONTRIBUTING.md and CLA/icla.md for details.
License
Juurakko (this FOSS core) is licensed under the GNU Affero General Public License v3.0
only (AGPL-3.0-only) — see LICENSE.
Juurakko is open core: the commercial editions (Juurakko Pro, Juurakko Enterprise) build on this core under separate commercial terms. Contributions are accepted under the CLA (see Contributing), which is what allows them to be included in those editions while contributors keep their copyright.