- TypeScript 73%
- Svelte 25.2%
- Go 0.8%
- CSS 0.5%
- Makefile 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Adds the tier slot Pro needs to render license management, mirroring the
existing styleExtras/layoutExtras pattern: FOSS owns the panel and the
taxonomy, Pro populates a section.
Deliberately generic — a slot for "extra General-panel sections", not a
licensing slot. FOSS has no licensing concept and must not learn one, so
the sidebar IA gains no licensing panel and no new panel class.
- GeneralPanel: accept `generalExtras?: Snippet`, render it between About
and Data & Cache (licensing is identity-ish; it must not sit buried
under the dependency lists).
- LeftSidebarShell: thread the prop through to GeneralPanel.
- Tests: slot renders when passed, renders nothing when omitted (plain
FOSS stays plain).
Tests: 971/971. svelte-check: 0 errors.
Signed-off-by: Marcel M. Otte <marcel.otte@mmo.to>
|
||
| .forgejo/workflows | ||
| .vscode | ||
| backend | ||
| CLA | ||
| desktop | ||
| dev/ci-templates | ||
| 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.