A secure, self-hosted checklist application with dark theme and timestamps. Built with Node.js, Express, and vanilla JavaScript.
- Dark Theme with responsive design
- Timestamps for task creation and completion
- Drag & Drop reordering
- Outline Navigator sidebar
- Keyboard Shortcuts (Ctrl+S, Ctrl+F, Enter, etc.)
- Offline Support with localStorage backup
- Secure Authentication with CSRF protection
- Export/Backup - Download tasks as JSON file
-
Clone and setup:
git clone <repository-url> cd taskvault
-
Configure environment: Edit
.envfile:ADMIN_USER=your_username ADMIN_PASS=your_secure_password SESSION_SECRET=generate_a_random_32_char_string PORT=3000
-
Run:
npm install npm start
-
Access: Open http://localhost:3000
-
Install PM2:
npm install -g pm2
-
Start with PM2:
pm2 start server.js --name taskvault pm2 save pm2 startup
-
Monitor:
pm2 status pm2 logs taskvault
npm start- Run in production modenpm run dev- Run in development mode with auto-reload
| Variable | Description | Default |
|---|---|---|
ADMIN_USER |
Admin username | admin |
ADMIN_PASS |
Admin password | password123 |
SESSION_SECRET |
Session encryption key | Required |
DATA_DIR |
Data storage directory | ./data |
PORT |
Server port | 3000 |
You can export all your tasks as a JSON file for backup or migration purposes:
- From the web UI: Click the "Export" button in the header (desktop) or the download icon (↓) in the mobile action bar.
- A JSON file will be downloaded with the filename format:
taskvault-tasks-YYYY-MM-DD_HH-mm-ss.json
- Data source: The export reads from the canonical
tasks.jsonfile located inDATA_DIR(default:./datain development,/datain production) - Format: The exported file contains a JSON array of task objects
- Consistency: The export uses file locking to ensure a consistent snapshot during concurrent operations
- Authentication: Export requires authentication (same as viewing tasks)