DumbDo

DumbDo

Docker app from ZappyZap's Repository

Overview

A stupidly simple todo list application that just works. No complex database, no unnecessary features - just todos.

DumbDo

A stupidly simple todo list application that just works. No complex database, no unnecessary features - just todos.

image

Features

  • ✨ Clean, minimal interface
  • πŸŒ“ Dark/Light mode with system preference detection
  • πŸ’Ύ File-based storage - todos persist between sessions
  • πŸ“± Fully responsive design
  • πŸš€ Fast and lightweight
  • πŸ”’ PIN protection (4-10 digits if enabled)
  • 🌐 PWA Support

Environment Variables

Variable Description Default Required
PORT The port number the server will listen on 3000 No
DUMBDO_PIN PIN protection for accessing todos (4-10 digits) - No
SINGLE_LIST Show a single List of ToDos (without the selector) false No

Quick Start

Running Locally

  1. Clone the repository
git clone https://github.com/dumbwareio/dumbdo.git
cd dumbdo
  1. Install dependencies
npm install
  1. Start the server
npm start
  1. Open http://localhost:3000 in your browser

Using Docker

  1. Pull from Docker Hub (recommended)
docker pull dumbwareio/dumbdo:latest
docker run -p 3000:3000 -v $(pwd)/data:/app/data dumbwareio/dumbdo:latest
  1. Or build locally
docker build -t dumbwareio/dumbdo .
docker run -p 3000:3000 -v $(pwd)/data:/app/data dumbwareio/dumbdo
  1. Docker Compose
services:
  dumbdo:
    image: dumbwareio/dumbdo:latest
    container_name: dumbdo
    restart: unless-stopped
    ports:
      - ${DUMBDO_PORT:-3000}:3000
    volumes:
      - ${DUMBDO_DATA_PATH:-./data}:/app/data
    environment:
      - DUMBDO_PIN=${DUMBDO_PIN-}
      - DUMBDO_SITE_TITLE=DumbDo
      # (Optional) Restrict origins - ex: https://subdomain.domain.tld,https://auth.proxy.tld,http://internalip:port' (default is '*')
      # - ALLOWED_ORIGINS=http://localhost:3000
      # - NODE_ENV=development # default production (development allows all origins)
    #healthcheck:
    #  test: wget --spider -q  http://127.0.0.1:3000
    #  start_period: 20s
    #  interval: 20s
    #  timeout: 5s
    #  retries: 3

Storage

Todos are stored in a JSON file at app/data/todos.json. The file is automatically created when you first run the application.

To backup your todos, simply copy the data directory. To restore, place your backup todos.json in the data directory.

Development

The application follows the "Dumb" design system principles:

  • No complex storage
  • Single purpose, done well
  • "It just works"

Project Structure

dumbdo/
β”œβ”€β”€ app.js          # Frontend JavaScript
β”œβ”€β”€ index.html      # Main HTML file
β”œβ”€β”€ server.js       # Node.js server
β”œβ”€β”€ styles.css      # CSS styles
β”œβ”€β”€ data/          # Todo storage directory
β”‚   └── todos.json
β”œβ”€β”€ Dockerfile     # Docker configuration
└── package.json   # Dependencies and scripts

Support the Project

Buy Me A Coffee

Contributing

This is meant to be a simple application. If you're writing complex code to solve a simple problem, you're probably doing it wrong. Keep it dumb, keep it simple.

Install DumbDo on Unraid in a few clicks.

Find DumbDo in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for DumbDo Review the template variables and paths Click Install

Categories

Download Statistics

442,987
Total Downloads
36,400
This Month
27,315
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
dumbwareio/dumbdo:latest
Last Updated2025-12-30
First Seen2025-01-28

Runtime arguments

Web UI
http://[IP]:[PORT:3000]
Network
bridge
Shell
sh
Privileged
false

Template configuration

WebUIPorttcp

The port on which the application will run.

Target
3000
Default
3000
Value
3000
DataPathrw

Data Dir

Target
/app/data
Value
/mnt/user/appdata/dumbdo