unsubbed.co

DumbDo

DumbDo lets you run stupidly simple to-do list entirely on your own server.

Honestly reviewed. No marketing fluff, just what you get when you run the simplest possible todo app on your own server.

TL;DR

  • What it is: A deliberately minimal, self-hosted todo list with file-based JSON storage — no database, no accounts, no sync service, no complexity [2][4].
  • Who it’s for: Home-labbers, sysadmins, and solo founders who already run a VPS and want a private task list that deploys in under five minutes. Not for teams needing collaboration, subtasks, or integrations [1][3].
  • Cost savings: Todoist Pro runs $4/mo, TickTick Premium $2.99/mo — neither is ruinous, but both send your tasks through someone else’s servers. DumbDo runs free on hardware you already own [3].
  • Key strength: It genuinely does nothing you don’t need. File-based storage means zero database maintenance, backups are a single cp command, and the Docker image is tiny enough to run alongside ten other containers without registering on your RAM graph [1][2].
  • Key weakness: This is a personal list, not a team tool. No subtask nesting, no due dates, no reminders, no external integrations — by design. If you outgrow a plain list, you’ve outgrown DumbDo [1].

What is DumbDo

DumbDo is a Node.js todo list application built by the DumbWare.io team — a two-person outfit started by a private jet pilot (abiteman) and a datacenter sysadmin (vin-im), later joined by a lead developer (gitmotion) [4]. The project started because the founder wanted something that would let family members drop files into a folder, which became DumbDrop, which became a whole suite of intentionally minimal self-hosted tools: DumbDrop, DumbPad, DumbKan, DumbDo, DumbBudget [2].

The design philosophy is printed plainly on the DumbWare website: “No over-engineering, no complexity — just pure, unadulterated simplicity that somehow gets the job done. Like using a rock as a paperweight: it’s not elegant, but hey, the papers aren’t going anywhere.” [4] That’s the actual design document for DumbDo. If you came looking for a Notion alternative, stop here.

What you get: a web UI with multiple named lists, check-off items, dark/light mode, PWA support so you can pin it to your phone’s home screen, and optional PIN protection via an environment variable [1][README]. That’s it. Your todos live in a JSON file at app/data/todos.json. There is no database. There is no user authentication system. There is no API. There are 167 GitHub stars and 15 forks as of this writing [README].

The project was announced in January 2025 alongside its sibling DumbKan (a Kanban board) in a r/selfhosted thread that collected over a hundred comments [1]. The community response was warm precisely because the pitch was honest: “a stupidly simple todo list application that just works.”


Why People Choose It

The r/selfhosted announcement thread [1] captures the appeal better than any marketing copy could. The top-voted replies weren’t asking for more features — they were relieved by the absence of them. The common thread: people who are already running a home server or VPS, who have tried Todoist or TickTick, and who are tired of syncing personal tasks through a third-party cloud that might change pricing, get acquired, or simply go away.

The noted.lol writeup [2] frames the broader DumbWare story well: these apps came from a real frustration with self-hosted software that solves simple problems with complex infrastructure. The author calls it “truly inspiring” that a simple drag-and-drop file upload idea grew into a whole suite — but the more relevant observation is that the community rewarded each tool in the suite specifically because it refused to add features.

Hostinger’s deployment page [3] lists the actual use cases that drive real installs: individual developers running DumbDo alongside their dev tools so they don’t context-switch to a cloud app; households using it as a shared list with PIN protection; sysadmins keeping server maintenance checklists on the same box they’re maintaining.

What DumbDo doesn’t try to compete on: project management, team collaboration, reminders, integrations, or anything that would require a user database. That’s not a gap — it’s the product.


Features

Based on the README and source review:

Core:

  • Multiple named lists (select from a list picker, or set SINGLE_LIST=true to skip the selector) [README]
  • Add, complete, and delete todo items
  • Items persist between sessions via data/todos.json — no database required [README][3]

Interface:

  • Dark and light mode with automatic system preference detection [README]
  • Fully responsive — works on mobile without pinch-zoom [README][3]
  • PWA support — installable to phone home screen, some offline capability [README]
  • Customizable site title via DUMBDO_SITE_TITLE env variable [README]

Access control:

  • Optional PIN protection (4–10 digits) set via DUMBDO_PIN environment variable [README][1]
  • ALLOWED_ORIGINS for restricting cross-origin access (defaults to * in production Docker) [README]

Deployment:

  • Docker Hub image (dumbwareio/dumbdo:latest) [README]
  • Docker Compose config included in the repository [README]
  • npm-based local run if you prefer no containerization [README]
  • Healthcheck configuration commented out in the example compose (you wire it yourself) [README]

What it doesn’t have: subtasks, due dates, recurring tasks, reminders, labels, priorities, comments, attachments, user accounts, API endpoints, or integrations with anything. This is the complete list.


Pricing: SaaS vs Self-Hosted Math

DumbDo:

  • License: GPL-3.0, free to self-host [README]
  • Software cost: $0
  • Infrastructure: whatever you’re already paying for a VPS, or a Raspberry Pi on your shelf

Todoist for comparison:

  • Free: 5 active projects, 5MB file uploads, no reminders
  • Pro: $4/mo (billed annually) — filters, reminders, unlimited projects
  • Business: $6/user/mo — team features

TickTick Premium:

  • $2.99/mo — calendar view, habit tracking, Pomodoro timer

Microsoft To Do:

  • Free, but Microsoft has your data and the product roadmap is tied to the Microsoft 365 ecosystem

Self-hosted math for a typical solo use case:

If you’re already running a $6 Hetzner VPS for other things, DumbDo costs you nothing to add. If you’re spinning up a VPS just for DumbDo, that’s poor math — a $4 Todoist subscription is cheaper than dedicated hosting.

The real comparison is: do you already have a server? If yes, DumbDo is free. If no, the economics only make sense if DumbDo is one of several tools you’re consolidating onto that server, which is exactly how DumbWare positions its entire suite [2][4].

There is no managed cloud version of DumbDo. It’s self-host only. Data not available on a SaaS tier because there isn’t one.


Deployment Reality Check

This is genuinely one of the fastest self-hosted deployments you’ll encounter. The Hostinger page [3] describes it accurately: no database maintenance, no complex backups, just a single JSON file.

Minimum viable setup:

services:
  dumbdo:
    image: dumbwareio/dumbdo:latest
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - ./data:/app/data

That’s it. No Postgres, no Redis, no SMTP, no OAuth. The entire stack is Node.js + a JSON file [README].

For HTTPS (which you want if it’s publicly accessible):

  • A reverse proxy (Caddy or nginx) in front of the container
  • A domain name or subdomain
  • Caddy auto-provisions Let’s Encrypt certs — total extra config is about 4 lines

Realistic time estimates:

  • Experienced home-labber with an existing reverse proxy: under 10 minutes
  • First-time Docker user following the README: 30–60 minutes including proxy setup
  • Someone who has never touched a Linux terminal: don’t start here; start with a managed todo app

What can go sideways:

  • The ALLOWED_ORIGINS variable defaults to * in production mode, which means any origin can hit the API. Fine behind a VPN or internal network; potentially worth tightening if you expose it to the public internet [README].
  • File permissions on the mounted data/ volume occasionally trip up first-timers on some VPS configurations — the container runs as a non-root user and needs write access to the mounted path.
  • There are no healthchecks configured by default. The compose file has them commented out. If you’re running this in a production-ish environment, wire up the wget healthcheck that’s already stubbed in [README].
  • Backup is manual. Nothing reminds you to copy data/todos.json. If your VPS dies and you haven’t backed it up, your lists are gone.

No Trustpilot reviews exist for DumbDo (it’s too small a project), but the r/selfhosted thread [1] comments are uniformly positive about simplicity. No one reported setup pain beyond the standard Docker Compose learning curve.


Pros and Cons

Pros

  • Zero infrastructure overhead. No database, no cache layer, no message queue — just a JSON file. This is the correct engineering decision for a personal todo list, and it makes the operational surface area tiny [README][2].
  • Genuinely instant deployment. One docker compose up -d and it’s running. Easypanel has a one-click template [5], Hostinger has a managed deployment option [3]. The barrier to a working install is as low as it gets in self-hosted software.
  • Privacy. Your todo items don’t leave your server. For a list that might contain “call lawyer re: contract dispute” or “research competitor pricing,” that’s a real benefit, not a marketing slogan [3].
  • Part of a coherent suite. DumbKan, DumbPad, DumbDrop, DumbBudget all follow the same design system, same PIN auth pattern, same deployment model [1][2]. If you’re running multiple DumbWare tools, they compose naturally without additional complexity.
  • PWA. Add to home screen on iOS or Android and it behaves like a native app. For a personal task list, this covers the mobile use case adequately without a dedicated app [README].
  • Open source with a real community. The DumbWare Discord is active [4], the GitHub has 43 commits with ongoing maintenance, and the r/selfhosted thread showed genuine community engagement, not astroturfed enthusiasm [1].

Cons

  • GPL-3.0, not MIT. The reference app (Activepieces) uses MIT. DumbDo uses GPL-3.0, which means if you embed it in a commercial product, you need to open-source your whole stack. For personal use this doesn’t matter; for embedding it in a client deployment, check with a lawyer [README].
  • No due dates, reminders, or subtasks. This is a deliberate design choice, not an oversight, but it means DumbDo can’t replace even a basic todo app for users who track deadlines [1].
  • Single-file storage has scaling limits. If you accumulate thousands of items across many lists, the JSON file approach starts to show latency. This isn’t a theoretical concern — it’s the tradeoff the developers consciously accepted [README][2]. In practice, for personal use, you’ll never hit it.
  • No multi-user model. The PIN protects access, but there’s no concept of separate user accounts or per-list permissions. If you share the PIN, everyone sees everything [1][README].
  • No API. You cannot pull your todos programmatically, integrate with other tools, or build automations on top of it. The data is accessible directly as JSON (which is technically an API of sorts), but there’s no documented HTTP interface [README].
  • Tiny project. 167 stars is small. The lead developer is a community volunteer, not a full-time maintainer. The project could stall if the core contributors lose interest. The r/selfhosted community is enthusiastic, but enthusiasm doesn’t merge pull requests [1][4].
  • No encryption at rest. Your todos.json file is plaintext. If an attacker gets file system access to your server, they have your todo list. This is the same risk as a text file, not better [README].

Who Should Use This / Who Shouldn’t

Use DumbDo if:

  • You run a home server or VPS and want a private task list that costs you nothing to add.
  • Your use case is genuinely personal lists — shopping, errands, today’s tasks — not project management.
  • You’re already running other DumbWare tools and want the suite to stay consistent.
  • You want something you can install in 10 minutes and never think about again.
  • You care about owning your data and the cloud options feel like overkill for what you actually need.

Skip it (use Vikunja or Donetick) if:

  • You need due dates, reminders, or recurring tasks.
  • You want to share lists with separate user accounts rather than a shared PIN.
  • You need an API to pull tasks into other tools or automations.
  • You’re tracking project tasks that require subtasks, priorities, or labels.

Skip it (stay on Todoist Free) if:

  • You don’t run a server and have no plans to.
  • Five active projects covers your workload.
  • You want reminders, filters, or recurring tasks.

Skip it (use Vikunja) if:

  • You want the full-featured self-hosted todo/project management experience — Vikunja has subtasks, due dates, Kanban views, team collaboration, CalDAV sync, and a real REST API, while still being self-hostable.

Alternatives Worth Considering

  • Vikunja — the obvious step-up. Self-hosted, open source (AGPLv3), full task management with subtasks, due dates, labels, reminders, team sharing, CalDAV, and a documented REST API. More complex to deploy but covers everything DumbDo intentionally omits.
  • Donetick — another minimal self-hosted todo/chores tracker with a focus on household task management and scheduling. Slightly more feature-complete than DumbDo with due dates and assignment.
  • Tasks.md — a flat-file markdown task list, similar philosophy to DumbDo but stores tasks as Markdown files instead of JSON. If you prefer editing your task list in a text editor, this fits better.
  • DumbKan — DumbWare’s own Kanban sibling, if your workflow is better expressed as a board than a list [1][2].
  • Todoist — the commercial alternative. $4/mo, polished, has a working iOS widget, excellent natural language date parsing, integrates with everything. If you’re not philosophically committed to self-hosting your task list, Todoist is the practical choice.
  • Microsoft To Do — free, well-maintained, syncs across devices. Sends your data to Microsoft. Fine for non-sensitive personal use.
  • Obsidian + Tasks plugin — if you already use Obsidian for notes, the Tasks plugin gives you a full todo system inside your local-first markdown vault. More setup, more power, zero additional infrastructure.

Bottom Line

DumbDo is exactly what it says it is: a dumb todo list. There’s no hidden complexity, no pricing trap, no feature roadmap that will eventually monetize your attention. You run it, you see your lists, you check things off. It asks nothing of you beyond a Docker-capable server.

The honest limitation is that “dumb” eventually becomes “too dumb” for most real workflows. The moment you need a due date, a reminder, or to share a list with someone who has a separate login, DumbDo stops being the right tool. That’s not a failing — it’s a stated design constraint [1][2][4]. If your use case fits inside those constraints, nothing else in the self-hosted space deploys faster or demands less maintenance.

For the specific person this is built for — a solo founder or developer who already has a home lab, wants their task list off Todoist’s servers, and genuinely doesn’t need more than multiple named lists with a PIN — DumbDo is a perfect fit. For anyone else, look at Vikunja first.


Sources

  1. r/selfhosted — “Introducing DumbKan AND DumbDo! The DumbDuo” (Reddit thread, community discussion). https://www.reddit.com/r/selfhosted/comments/1ia2jdh/introducing_dumbkan_and_dumbdo_the_dumbduo_a/
  2. noted.lol — “Dumbware.io: Simplifying Self-Hosted Apps”. https://noted.lol/dumbware-io/
  3. Hostinger VPS — “DumbDo Docker VPS | One-Click To-Do List Deployment”. https://www.hostinger.com/vps/docker/dumbdo
  4. DumbWare.io — official project page. https://dumbware.io/DumbDo
  5. Easypanel — Templates listing. https://easypanel.io/templates

Primary sources:

Features

Mobile & Desktop

  • Mobile App
  • Progressive Web App (PWA)
  • Responsive / Mobile-Friendly