Skip to content
Index

Software 2026

Obsidian Gitea Cards

My first open-source contribution to the Obsidian community - a plugin that renders live, auto-refreshing Gitea issue cards inline in your notes and lets you file issues without leaving the editor.

  • TypeScript
  • Obsidian Plugin
  • Gitea
  • REST API
  • esbuild

The plugin rendering a live Gitea milestone dependency graph of issue cards inside an Obsidian note
fig.02 - The plugin rendering a live Gitea milestone dependency graph of issue cards inside an Obsidian note

I’ve always wanted to give something back to the open-source community, and this is my first one - a plugin for Obsidian, the note-taking app I live in. It grew out of a very personal itch: I track most of my projects as Gitea issues, and I was tired of context-switching to a browser every time I wanted to glance at one from my notes.

Obsidian Gitea Cards closes that gap. Drop a reference into a note and the plugin renders a live issue card right there in the editor - number, title, body preview, labels, comments, state, author, and milestone - and keeps it fresh on a configurable auto-refresh, with offline caching and exponential backoff so it degrades gracefully when the server is unreachable.

It turned into more than a read-only viewer along the way:

  • Inline references with `GITEA:owner/repo:#123` syntax and autocomplete, plus paste-to-card URL conversion for quick insertion.
  • Comment threads that lazily expand and render recent comments as Markdown.
  • Search and milestone blocks via gitea-search and gitea-milestone code fences.
  • A dependency graph (gitea-graph) that renders issues as a DAG, surfacing blocker relationships at a glance.
  • An issue-creation modal so I can file a new issue without ever opening Gitea, and Cloudflare Access support for reaching a self-hosted instance from off-LAN.

It’s built in TypeScript against the Obsidian API, bundled with esbuild, and released under the MIT license. Shipping it - manifest, versioning, CI, the whole submission dance - was as much the point as the code itself: my first real step into maintaining something other people can use.