Built|Creator & Solo Builder|2025

Deck: The IDE I built because nothing on the market fit

Existing IDEs are either cluttered with dev features I don't use or too heavy on agentic workflow. I wanted something simple: read code files, render Markdown nicely, and run Claude Code in multiple terminals side by side. So I built it. Electron, React, TypeScript, CodeMirror, xterm.js. Actively maintained.

Deck: The IDE I built because nothing on the market fit

Why This

I wasn't comfortable in any of the IDEs on the market. VS Code and Cursor are cluttered with dev features I never touch. The new agentic editors feel built around the agent, not around me. I wanted something quieter: a clean way to read code, render Markdown nicely, and run Claude Code in multiple terminals side by side. Nothing did exactly that. So I built it.

Root Cause

Two failure modes everywhere I looked. VS Code, JetBrains, and the long-tail pro editors are built around configurability — 10,000 extensions, keybinding modes, panel layouts. Power that costs attention.

Cursor, Windsurf, and the new wave of agentic editors swing the other way. The agent is the product. The interface is built to surface what the agent is doing, not to let you read your own code in peace.

I wanted neither. A quiet editor. A nice Markdown reader. Several terminals open with Claude Code, one per task. That was the whole brief.

Key Bet

Two decisions shaped everything. First, Electron over web. I needed native file system access, a real terminal, and browser previews via WebContentsView (not an iframe with sandboxing issues). Web would have been faster to ship but would have compromised the core experience. A real IDE needs real OS integration.

Second, I chose to build a dual-mode Markdown editor using BlockNote. Most editors force you to choose: raw Markdown or visual editing. I wanted both. Switch between a code view and a Notion-like formatted view seamlessly. That required inventing a sidecar file system where .md.blocknote JSON files preserve rich formatting alongside standard Markdown. It added weeks of complexity, but it means I can keep specs, decisions, and code in the same workspace without switching tools.

A real IDE needs real OS integration. That ruled out the web from day one.

How I Built

I built Deck in layers, each one usable on its own. The code editor came first: CodeMirror 6 with syntax highlighting for 15+ languages, code folding, and bracket matching. Then the integrated terminal layer via xterm.js v6, designed to host multiple Claude Code sessions in parallel — one tab per task, no juggling. Browser preview followed, using Electron's WebContentsView to render localhost dev servers without iframe security restrictions.

Git was the hardest layer. I built a simplified UI: a branch switcher, a visual diff viewer, a commit form, and file-explorer badges that surface git status at a glance. Designed to disappear when you're not using it.

What Shipped

Deck is live at getdeck.studio. It does what I wanted: a clean place to read code, write notes, and run a few Claude Code sessions at once.

I ship updates every couple of months.

20+
Active users
€0
Marketing spend
100%
Word of mouth

What I'd Do Differently

The biggest constraint is Electron itself. It runs fine for a single window, but the whole point of Deck is running multiple Claude Code sessions in parallel — and the moment I open three or four windows, the memory footprint and startup time get expensive.

At some point I'll rewrite it in Tauri. Rust runtime, native webviews instead of a bundled Chromium per window, much smaller memory cost per session. The architecture I built is portable enough that it should be a transport swap, not a redesign.