daedalus Svelte Themes

Daedalus

A lightweight, offline-first kanban board desktop app

Daedalus

A lightweight, offline-first kanban board desktop app.

Boards are plain directories of markdown files - no databases, no cloud, no accounts.

Built as a fast, personal replacement for Trello that plays nicely with Obsidian and other markdown tools.

See more screenshots in docs/screenshots/

Why

  • Trello was using 1-3 GB of RAM for a large single board. Dragging cards would lag or fail entirely on this board
  • Obsidian's Kanban plugin didn't do what I needed without a pile of community plugins and needless complexity
  • I wanted my data as plain files - editable in any text editor, easy to back up, easy for AI agents to read

Daedalus uses ~60 MB of RAM and loads boards in under 100ms. Note: This depends on board size, but for reference I went from 1-3GB RAM on Trello to ~200MB RAM loading the same board in Daedalus.

Features

  • Markdown cards with YAML frontmatter - edit in Daedalus, Obsidian, vim, or any text editor
  • File watcher - auto-reloads when cards are edited externally
  • Drag and drop - cards between lists, list column reordering
  • Rich card fields - labels, icons, due dates, date ranges, checklists, counters, time series, estimates, URLs
  • Card templates - predefined structures with preset fields, labels, and checklists
  • Search and filter - full-text search with #label, icon:, and url: filter prefixes
  • Wiki-style linking - [[card-id]] links between cards
  • Keyboard navigation - arrow keys, shortcuts for common actions, ? for help
  • Custom icons - upload SVG/PNG icons for cards and lists
  • Board scratchpad - persistent markdown notepad alongside the board
  • Multiple boards - switch between boards, set a default, recent board history
  • Export - JSON and ZIP formats
  • Zoom and view modes - zoom in/out, minimal card view
  • Board statistics - card counts by label, list, and other breakdowns
  • CLI tool - daedalus-cli for scripting and automation

Stack

  • Backend: Go 1.23 with Wails v2
  • Frontend: Svelte 5 with TypeScript and SCSS
  • Data: Directories = lists, .md files = cards, board.yaml = config

Board Format

A board is a plain directory: subdirectories are lists, .md files are cards (YAML frontmatter + markdown body), and board.yaml holds config.

All frontmatter fields except id, title, and list_order are optional. Unknown YAML keys are preserved through round-trips, so cards edited by other tools won't lose data.

See docs/SCHEMA.md for the full field reference, types, valid values, and examples.

Custom Icons

Daedalus doesn't ship with icons to stay small. Upload your own SVG or PNG files through the icon manager, or drop them into _assets/icons/.

Good sources: Lucide, Simple Icons, or any site's favicon.

# Convert .ico to .png if needed
python3 -c "from PIL import Image; Image.open('favicon.ico').save('favicon.png')"

CLI

daedalus-cli provides scriptable access to boards:

daedalus-cli --board ~/boards/my-board board                       # board info (title, list/card counts)
daedalus-cli --board ~/boards/my-board summary                     # detailed text overview of board state
daedalus-cli --board ~/boards/my-board board-json                  # full board as JSON (config, cards, icons)
daedalus-cli --board ~/boards/my-board lists                       # get all lists
daedalus-cli --board ~/boards/my-board cards todo                  # get cards in a list
daedalus-cli --board ~/boards/my-board card-get 42                 # get full card details by ID
daedalus-cli --board ~/boards/my-board card-create todo "New task" # create a task
daedalus-cli --board ~/boards/my-board card-delete 42              # delete a card by ID
daedalus-cli --board ~/boards/my-board list-create backlog         # create a list
daedalus-cli --board ~/boards/my-board list-delete backlog         # delete a list by name
daedalus-cli --board ~/boards/my-board export-json out.json        # export board as JSON file
daedalus-cli --board ~/boards/my-board export-zip out.zip          # export board as zip file

Most output is JSON for easy piping to jq or other tools. The summary command outputs plain text.

Trello Migration

Export your Trello board as JSON, then convert:

python3 scripts/trello_to_md.py --input trello_export.json --output ~/boards/my-board

This creates list directories and card markdown files with frontmatter metadata from the Trello export.

Limitations

  • Only tested on Linux, but should mostly work on Windows/Mac if I didn't miss any cross-platform problems.
  • daedalus-cli not fully tested. This was a nice to have for automation, but I don't really use it in my workflow yet.

Development

Dependencies (Arch Linux)

sudo pacman -Syu --needed base-devel gtk3 webkit2gtk svt-av1 libavif npm go
go install github.com/wailsapp/wails/v2/cmd/wails@latest
wails doctor  # verify all dependencies

Commands

wails dev              # Development server with hot reload
wails build            # Production build
go test ./...          # Run Go tests
cd frontend && npx svelte-check  # TypeScript/Svelte type checking

Debug Logging

DAEDALUS_DEBUG=1 wails dev

Future Features

Features that I originally thought up, but I need to think about it more.

  • Card dependencies. ex: Card B is blocked by Card A
  • Dependency graph view
  • Recurring tasks. ex: Card created and due every Tuesday at 12:00 PM. Maybe not cards, but like a daily checklist thing?
  • Habit tracking - Track something over a date range or limitless. Check off daily or configurable interval?
  • Epics (multiple cards) and Sagas (multiple epics) - useful for trying to track giant goals
  • Calendar view - display cards, recurring tasks, etc.
  • MCP server - give easy access to AI agents. I'm not there yet in my workflow, but should be relatively easy since it could probably use the same functions as the CLI. See docs/SCHEMA.md for the machine-readable board/card schema reference

Top categories

Loading Svelte Themes