A studio that keeps its own house in order.
Xkye runs its own product, Dalqen, alongside client engagements like Renigo and the work of running the studio. Every one of them needs a backlog, a plan, and somewhere to write down what was decided and why.
Kova is that place. It is a single installation for one company, built by the people who use it, and its own backlog has lived in Kova since the first working slice.
Kova is a desktop tool, so the prototype is easier to use on its own, full screen.
Work in one place, writing in another, and words that drift.
The trouble with project tools is rarely a missing feature. It is the gap between them, and the way the same word means three things depending on who you ask.
Issues and documents live apart
The spec is in one tool and the work in another. A decision written down last month can’t show whether its issues ever shipped.
“Archive” means whatever you need it to
Does deleting hide something, or lose it? Is a deactivated person gone? When the vocabulary drifts, people stop trusting the buttons.
Developers live in a terminal
A tool that is only a website is one more tab. The people closest to the code want to read and move issues where they already are.
One roster, every state it can be in.
A person’s relationship with Kova is a real thing with a lifecycle, not a row in a users table. Owners govern the installation, and Project memberships decide what everyone else can reach.
These five come straight from the sample data the team develops against. Each one stands for a state the system has to handle, so every screen that shows “who” has a real answer to show.
Five rules that shaped every screen.
Words before screens
Every concept is defined in a glossary, with the words to avoid, before it gets a button. The interface, the API and the CLI all use the same terms.
The address is the state
A Filter lives entirely in the URL, so a narrowed list is a link you can paste to a colleague and they see exactly what you see.
One seam for browser and terminal
The web app and the CLI call the same versioned API, so neither one can quietly drift from the other.
Dense, not cramped
A console that actually uses a desktop’s width: small type with steps a reader can tell apart, and rows that fit a scanning eye.
Nothing is lost by accident
Archive keeps things. The Trash waits 30 days. Suspending keeps someone’s history. Document Versions are never thrown away.
Areas, not apps
The strip at the far left switches between Kova, Kova Docs and, for Owners, Admin. Each Area has its own navigation and remembers where you left it, so moving from an issue to a document and back is one press that keeps your place.
- No top bar anywhere. The bell, search and the fold control moved into the panel header, so the content gets the full height.
- Home answers “what needs me?” with your open issues, anything waiting on your review, and the running Sprints, each with its progress counted from the issues themselves.
- Admin shows its count on the strip whenever something is waiting on an Owner.
Filters that are links
Narrow any issue list by Status, Priority, Assignee, Project or Placement. Values within one field are alternatives, and fields narrow together. The whole Filter is carried in the address.
- “Me” and “Unassigned” are values, not special views, so “my blocked work” is just a Filter.
- A Saved filter is named and private. It shows up in your own panel and nobody else’s.
- The keyboard is a first-class path:
jandkmove through the rows andEnteropens one.
Watch the address bar above the prototype change as you pick values.
Board and plan
A Project’s screens sit in one row of tabs (Overview, Issues, Board, Plan, Docs and Settings) and every tab is a real address. The board moves work between statuses, and the plan moves it between the Backlog and Sprints.
- Status is never colour alone. Every chip carries an icon and its word, so the tint is emphasis rather than information.
- A new Project copies the Planning Defaults, so changing the defaults later never rewrites a Project that already exists.
An issue, and getting to it
An issue reads like a document: a Markdown description, then its history and comments in one timeline. Its properties sit to the side, each one a single click to change.
- Keys are published addresses.
DAL-1is allocated once per Project, never reused, and works the same in a link, a document and the CLI. - ⌘K reaches everything: any destination, any issue, any document, and the common commands, without leaving the keyboard.
Kova Docs
Documents are written in a Space inside a Project, and read in one Area across every Project you belong to. Each one starts as a Draft that only its author and their invited collaborators can see.
- Embeds are live. The issue list in this Draft is drawn from a Filter, so moving a card on the board changes the document without anyone editing it.
- Publish is one-way and says so before you press it. Archiving retires a published Document without breaking a single link to it.
- Type
/on an empty line for headings, toggles, callouts, a table of contents that rebuilds itself from the headings, and Embeds.
Versions mark moments, not saves
Several people can edit a Document at once, so Kova doesn’t ask anyone to save. A version is taken automatically once the editors go quiet, and anyone can name one by hand, for example “Sent to client”.
- Every version is kept for as long as the Document exists, and reading one is clearly marked as read-only.
- An Icon and a Cover belong to the Document, not its content, so changing them never creates a new version.
Admin and the Confirmation code
Admin opens on Needs attention, a queue of things waiting on an Owner, such as an expired invitation or someone suspended for longer than the review period. Each item leaves the queue when it’s dealt with.
- Only acts that move ownership or end a membership for good are guarded: Make Owner, demoting or suspending an Owner, and Remove from Kova.
- Suspending unassigns someone’s unfinished issues, and restoring them doesn’t hand the work back, so nobody stays assigned to work they can’t reach.