Project management with tree view of all ticket relations.
  • TypeScript 74.4%
  • Svelte 23.8%
  • Go 0.9%
  • CSS 0.5%
  • Makefile 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Marcel M. Otte 65409f58d2
Some checks failed
CI / test (push) Successful in 1m37s
CI / build (push) Successful in 27s
CI / desktop (push) Failing after 1m51s
Fix #162: theme-aware edge highlight for light mode
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>
2026-07-21 15:33:20 +02:00
.forgejo/workflows CI: pin upload-artifact to v3 (Forgejo/GHES compatibility) 2026-07-20 13:05:06 +02:00
.vscode Initial Commit - MVP 2026-03-26 11:43:38 +01:00
backend docs(brand): rename to Juurakko in README, banners, docs-site 2026-07-09 21:41:59 +02:00
CLA Add preliminary Contributor License Agreement (ICLA + CCLA) 2026-07-20 11:43:25 +02:00
desktop build fixes 2026-07-20 14:55:10 +02:00
docs refactor: Wave 4 deferred-item sweep (#119) 2026-05-12 13:38:46 +02:00
docs-site docs(brand): rename to Juurakko in README, banners, docs-site 2026-07-09 21:41:59 +02:00
e2e test(e2e): fix stale detail-overlay selector after ModalOverlay refactor 2026-07-10 15:10:23 +02:00
src Fix #162: theme-aware edge highlight for light mode 2026-07-21 15:33:20 +02:00
static Replace app icon with layered-cards design (#86) 2026-04-20 18:34:30 +02:00
.gitignore Add mkdocs-material documentation site with Diataxis structure 2026-04-14 20:33:06 +02:00
.npmrc Initial Commit - MVP 2026-03-26 11:43:38 +01:00
CONTRIBUTING.md Add preliminary Contributor License Agreement (ICLA + CCLA) 2026-07-20 11:43:25 +02:00
LICENSE APGL License 2026-07-20 10:59:44 +02:00
Makefile Modernize desktop build + CI: Wails 2.13, Debian trixie, webkit 4.1 2026-07-20 12:53:13 +02:00
package-lock.json fix(ci): regenerate lockfiles after Juurakko rebrand 2026-07-10 06:55:49 +02:00
package.json chore(brand): rename package/build metadata to juurakko 2026-07-09 21:38:43 +02:00
playwright.config.ts Initial Commit - MVP 2026-03-26 11:43:38 +01:00
README.md Add preliminary Contributor License Agreement (ICLA + CCLA) 2026-07-20 11:43:25 +02:00
svelte.config.js Initial Commit - MVP 2026-03-26 11:43:38 +01:00
tsconfig.json chore: Wave 1 cleanup before structural refactors (#119) 2026-05-12 10:55:29 +02:00
vite.config.ts chore(brand): rename app UI strings and PWA manifest to Juurakko 2026-07-09 21:39:17 +02:00
vitest.config.ts Extract AppHeader with grouped buttons and snippet slots (#67) 2026-04-15 09:17:52 +02:00

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

Download the latest release for your platform from the Releases page:

  • Linuxjuurakko-desktop-linux-amd64
  • Windowsjuurakko-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

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.