A stupidly simple todo list application that just works. No complex database, no unnecessary features - just todos.
- ✨ Clean, minimal interface
- 🌓 Dark/Light mode with system preference detection
- 💾 File-based storage - todos persist between sessions
- 📱 Fully responsive design
- 🚀 Fast and lightweight
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 |
- Clone the repository
git clone https://github.com/yourusername/dumbdo.git
cd dumbdo
- Install dependencies
npm install
- Start the server
npm start
- Open http://localhost:3000 in your browser
- Build the image
docker build -t dumbdo .
- Run the container
docker run -p 3000:3000 -v $(pwd)/data:/app/data dumbdo
Todos are stored in a JSON file at ./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.
The application follows the "Dumb" design system principles:
- No complex storage
- Single purpose, done well
- "It just works"
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
- Primary: #2196F3 (Material Blue)
- Hover: #1976D2 (Darker Blue)
Light theme:
- Background: #f5f5f5
- Container: white
- Text: #333
- Borders: #ccc
Dark theme:
- Background: #1a1a1a
- Container: #2d2d2d
- Text: white
- Borders: #404040
MIT
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.