DEV Community

孫昊
孫昊

Posted on

I Sold My Indie Hacker Dashboard for $39 on Gumroad. Here is What is in It.

TL;DR: After running a 60-day indie iOS dev experiment, I packaged my actual dashboard into a $39 Gumroad SKU. Below: what's inside, why someone would buy it, and the architecture that makes it useful.


Why a dashboard is the most leveraged indie tool

When you've shipped 4 iOS apps + 5 Gumroad SKUs + 15 dev.to articles + 7 Substack newsletters + 1 affiliate program, you have ~80 LIVE assets to track. Plus some 100+ paste-ready files in various states.

Manual tracking via INDEX.md fails at this scale. You need:

  1. A way to surface what's LIVE (and what's broken)
  2. A way to see real revenue per channel
  3. A way to mark items "done" without editing markdown by hand
  4. A way to one-click execute scripts on assets

That's what my dashboard does. Three panels:

  • TODO: P0/P1 items the user hasn't done yet
  • Check: ideas/roadmap to review
  • Run: scripts with one-click execution

Plus aggregations: LIVE asset list, revenue tracker, categories grid.

What's actually in the SKU ($39)

The Gumroad SKU includes:

1. Flask backend (app.py, ~480 LOC)

  • Manifest scanner walks file tree, parses YAML frontmatter from .md/.py/.sh/.yaml
  • Validates required fields (id, title, category, priority, status)
  • Aggregates into typed Asset dataclasses
  • Exposes 5 REST endpoints: /api/assets, /api/audit, /api/revenue, /api/refresh, /api/action

2. Three-panel UI (templates/dashboard.html)

  • TODO panel with priority sort + ETA badges
  • Check panel with ideas/roadmap split
  • Run panel with one-click subprocess execution
  • Categories grid (10 categories with color-coded badges)
  • LIVE Just-Published panel (auto-shows assets with live_url field)
  • Revenue Tracker (loads /api/revenue)

3. Manifest schema (MANIFEST_SCHEMA.md)

  • 5 required fields + 8 optional
  • 10 categories enum
  • 16 actions (preview, run-script, mark-done, etc.)
  • Validation rules

4. Helper scripts

  • cleanup_old_done.py — cron-friendly archival of old done items
  • daily_briefing.py — morning summary of last 24h activity
  • verify_all_live_urls.py — URL audit script
  • mark_published.py — bulk update assets with status: done + live_url

5. Architecture doc

  • Why manifest-first beats hand-maintained INDEX.md
  • How to extend with new asset types
  • Cross-references via depends_on field
  • ICE score + tier_price_usd for monetization tracking

Why someone would buy this for $39

If you're an indie hacker with 20+ markdown files spread across categories, the dashboard saves ~30 min/day in INDEX maintenance. At indie hourly rate, that's $20-30/day saved. ROI: 1-2 days.

If you're shipping multiple Gumroad SKUs + content + iOS apps + B2B services, you need something. Either build your own (~10 hours), buy mine ($39 + 1 hour to customize), or live with the chaos.

The $39 price point is a deliberate "expensive enough that buyers commit, cheap enough not to be a budget question." Adapty 2026 data: digital products at $19-49 convert at 4-6%, vs $99+ at 1-2%.

What's NOT in the SKU

  • The actual content of my AutoApp portfolio (your dashboard, your assets)
  • Substack/dev.to API integrations (those need your own keys)
  • Cloud hosting (you run locally on port 5000 or your own VPS)
  • Customization beyond manifest-first (no GUI to edit, you customize templates)

Architecture decisions

Why Flask, not Next.js or FastAPI?

Flask is trivially deployable on Windows / macOS / Linux without runtime dependency hell. For a single-user indie tool, simplicity > performance.

Why YAML frontmatter, not SQLite?

Manifest-IS-the-asset is a single source of truth. SQLite would be another file to back up, another schema migration to handle. YAML frontmatter goes wherever the file goes.

Why no auth?

Single-user local tool. Auth is overhead for someone running on localhost:5000. If you deploy to a public URL, add Flask-Login + a single user.

Why no real-time WebSocket?

The dashboard refreshes on demand. Real-time is overkill for tools that change every few hours, not every few seconds.

What you'll customize when you buy it

Most buyers will:

  1. Edit the categories enum to match their domains (mine has gumroad-sku, ios-pricing, etc. — yours might have saas-feature, client-onboarding, etc.)
  2. Set up /api/revenue for your channels (out of box: Gumroad / Substack / iOS / WeChat / B2B / note-com — yours might be Stripe / Lemonsqueezy / etc.)
  3. Adjust revenue_aggregator.py to pull from your actual revenue sources
  4. Replace the live_url rendering with your branding

That's ~1-3 hours. After that, the dashboard runs itself.

Source preview (free)

Before buying, you can see the manifest schema doc and the auto-discovery scanner architecture in my dev.to article on manifest-first design.

The full SKU at $39: AutoApp Dashboard on Gumroad. 30-day refund guarantee.


If you're shipping multiple indie projects in 2026 and want the orchestration layer, this dashboard is the layer. Plus the iOS Indie Launch Playbook ($19) covers the why behind the manifest-first pattern.

Top comments (0)