DumbKan - Simple Kanban Board
A lightweight, mobile-friendly Kanban board application for managing tasks and projects. Built with vanilla JavaScript and Node.js.
Features
🎯 Task Management
- Create, edit, and delete tasks easily
- Double-click (desktop) or double-tap (mobile) to edit tasks
- Drag and drop tasks between columns
- Smooth animations and visual feedback during interactions
📱 Mobile-Optimized
- Responsive design that works on all devices
- Touch-friendly interface
- Double-tap to edit tasks on mobile
- Easy task movement with touch gestures
📋 Board Management
- Multiple boards support (Work, Personal, etc.)
- Create and delete boards
- Switch between boards instantly
- Persistent board state
📊 Column Management
- Add new columns for custom workflows
- Edit column names inline
- Remove columns with confirmation
- Drag tasks between columns
🎨 Theme Support
- Light and dark mode
- System theme detection
- Smooth theme transitions
- Theme persistence across sessions
💾 Data Persistence
- Automatic saving of changes
- Persistent across page refreshes
- JSON-based storage
- No database required
Environment Variables
| Variable | Description | Default | Required |
|---|---|---|---|
| PORT | Port for the server to listen on | 3000 | No |
| DUMBKAN_PIN | PIN code required to access the application | None | No |
| DUMB_SECRET | Secret key for API authorization via X-API-Key header | None | No |
| SITE_TITLE | Title displayed in the header and browser tab | DumbKan | No |
| BASE_URL | Base URL path for the application (e.g., '/app') | - | No |
PIN Protection
When DUMBKAN_PIN is set, the app requires PIN verification before accessing or modifying boards. The PIN must be 4-10 digits long.
Data Persistence
Task data is stored in /app/dumbdata/tasks.json. When using Docker, mount this directory as a volume to persist data between container restarts.
Data Migration
This version contains significant changes to the data structure. If you're upgrading from an earlier version:
- The application will automatically detect old data files in legacy locations (e.g.,
/app/data/tasks.json) - Data will be automatically migrated to the new structure and stored in
/app/dumbdata/tasks.json - A backup of your old data will be created at the original location with a timestamp
- No manual steps are required for this migration
Data Structure Changes
- The data model has been normalized with separate collections for boards, sections, and tasks
- Columns are now called "sections" and have unique IDs
- Tasks have more metadata: priority, status, due dates, etc.
- This new structure improves performance and enables future features
Getting Started
Option 1: Docker (For Dummies)
Pull and run with one command:
docker run -d -p 3000:3000 -v $(pwd)/data:/app/dumbdata --name dumbkan dumbwareio/dumbkan:latest
- Go to http://localhost:3000
- Create your first board and tasks
- Marvel at how dumb easy this was
Option 2: Docker Compose (For Dummies who like customizing)
Create a docker-compose.yml file:
services:
dumbkan:
image: dumbwareio/dumbkan:latest
container_name: dumbkan
restart: unless-stopped
ports:
- 3000:3000
volumes:
# Where your tasks data will be stored
- ./data:/app/dumbdata
environment:
# The title shown in the web interface
SITE_TITLE: DumbKan
# Optional PIN protection (leave empty to disable)
DUMBKAN_PIN:
# The base URL for the application
BASE_URL: http://localhost:3000
Then run:
docker compose up -d
- Go to http://localhost:3000
- Create your first board and tasks
- Rejoice in the glory of your dumb organization
Option 3: Local Installation (For Developers)
-
Clone the repository:
git clone https://github.com/dumbwareio/dumbkan.git cd dumbkan -
Install dependencies:
npm install -
Set environment variables in
.env:PORT=3000 # Port to run the server on DUMBKAN_PIN= # Optional PIN protection SITE_TITLE=DumbKan # Custom site title BASE_URL=http://localhost:3000 # Base URL for the application -
Start the server:
npm start -
Go to http://localhost:3000 and enjoy your locally hosted DumbKan!
Windows Users
If you're using Windows PowerShell with Docker, use this format for paths:
docker run -d -p 3000:3000 -v "${PWD}\data:/app/dumbdata" dumbwareio/dumbkan:latest
Usage Guide
Managing Tasks
- Click the + button in a column to create a new task
- Click the info icon in a task to edit details
- Drag and drop tasks between columns
- Delete tasks by clicking the title, then the red x
Customizing Columns
- Click the + button on the right to create a new column
- Click a column name to edit it
- Delete by clicking the title, then the red x
Technical Details
- Built with vanilla JavaScript - no frameworks
- Node.js backend with Express
- File-based JSON storage
- Responsive CSS with modern features
- Mobile-first design approach
Contributing
Feel free to submit issues and enhancement requests!
