| api | ||
| app | ||
| assets | ||
| data | ||
| sql | ||
| uploads | ||
| attachment_delete.php | ||
| comment_delete.php | ||
| day.php | ||
| docker-compose.yml | ||
| Dockerfile | ||
| fix_owners.php | ||
| index.php | ||
| install.php | ||
| join.php | ||
| login.php | ||
| logout.php | ||
| manifest.json | ||
| notifications.php | ||
| README.md | ||
| recurring.php | ||
| register.php | ||
| remaining.php | ||
| search.php | ||
| settings.php | ||
| sw.js | ||
| switch_group.php | ||
| task_delete.php | ||
| task_details.php | ||
| task_done.php | ||
| task_edit.php | ||
| task_move.php | ||
| task_snooze.php | ||
| task_subtask.php | ||
| task_undo.php | ||
| update_db_v3.php | ||
| update_db_v4.php | ||
| update_db_v5.php | ||
| update_db_v6.php | ||
| update_db_v7.php | ||
| update_db_v8.php | ||
| update_db_v9.php | ||
| update_features.php | ||
| update_recurring.php | ||
Donewise - Collaborative Shopping List & Task Manager
Donewise is a robust, self-hosted web application designed to simplify household management. It combines a shared shopping list, daily task planner, and chore tracker into a clean, mobile-friendly interface.
Built with PHP and SQLite, Donewise is lightweight, privacy-focused, and easy to deploy using Docker.
✨ Features
Core Functionality
- Daily Task Lists: Navigate between days to plan ahead or review past tasks.
- Real-time Collaboration: Lists update instantly across all devices using Server-Sent Events (SSE).
- Smart Input:
- Tags: Organize items with hashtags (e.g.,
Buy Milk #grocery). - Mentions: Assign tasks to family members using
@username.
- Tags: Organize items with hashtags (e.g.,
- Drag & Drop: Reorder tasks and tags to prioritize what matters most.
⚡ New Power Features
- Smart API & Shortcuts:
- Natural Language Parsing: Add tasks via Siri/Shortcuts by saying "Buy milk next Friday" — it auto-schedules to the correct date.
- QR Code Connect: Scan a QR code in Settings to instantly link mobile devices.
- Checklists (Subtasks): Break complex tasks down into smaller steps (e.g., "Recipe" -> "Ingredients"). Supports @mentions within items!
- Quick Snooze: Push a task to "Tomorrow" with a single tap (💤 button).
- Global Search: Instantly find past tasks or notes across your entire history.
Organization & Details
- Recurring Tasks: Set items to repeat automatically every X days (e.g., "Water plants") or on specific days of the week (e.g., "Take out trash" every Thursday).
- Rich Task Details: Click any task to:
- Add Comments for extra context.
- Upload Attachments (images, PDFs) directly to the task.
- View History of changes.
- Move the task to a different date.
Group Management
- Multiple Groups: Create separate spaces for "Home", "Work", or "Trip Planning".
- Invite System: Generate secure invite links to easily add members.
- Member Roles: Group creators can manage members (kick users) and transfer ownership.
- Notifications: See who joined, left, or updated critical items.
Mobile & UI
- Progressive Web App (PWA): Installable on iOS and Android for a native app experience.
- Dark Mode: Automatically respects your device's theme settings.
- Context Switching: Quickly switch between different groups via the user menu.
🛠 Prerequisites
- Docker and Docker Compose installed on your machine.
- (Optional) A reverse proxy (Nginx, Traefik, or Nginx Proxy Manager) for SSL/HTTPS access.
🚀 Installation Guide
1. Clone & Setup
Create a directory for your project and place the source code inside. Your structure should look like this:
/donewise
├── api/
├── app/
├── assets/
├── data/ <-- Created automatically
├── sql/
├── uploads/ <-- Created automatically
├── docker-compose.yml
└── ... (PHP files)
2. Configure Environment
Edit docker-compose.yml to match your environment.
| Variable | Default | Description |
|---|---|---|
APP_URL |
http://localhost:8088 |
Crucial: Set this to your actual access URL. Used for invite links. |
PHP_TZ |
Asia/Kolkata |
Set to your timezone (e.g., America/New_York) for accurate task dates. |
3. Build & Run
Open a terminal in your project folder and run:
docker compose up -d --build
4. Fix Permissions (Important)
SQLite and the upload system need write access. Run these commands to fix permissions inside the container:
# 1. Allow web server to write to the database folder
docker exec -it Donewise chown -R www-data:www-data /var/www/html/data
docker exec -it Donewise chmod -R 775 /var/www/html/data
# 2. Allow web server to write to the uploads folder
docker exec -it Donewise mkdir -p /var/www/html/uploads
docker exec -it Donewise chown -R www-data:www-data /var/www/html/uploads
docker exec -it Donewise chmod -R 775 /var/www/html/uploads
📦 Database Setup & Updates
Use the built-in scripts to initialize and upgrade your database schema.
1. Initial Install
Open your browser and visit:
http://localhost:8088/install.php
(You should see a "✅ Installed" message).
2. Apply Feature Updates
To enable all latest features (Smart Shortcuts, Subtasks, Snooze), visit the following URLs in order. Even if you are installing fresh, run these to ensure the schema is complete.
http://localhost:8088/update_db_v4.php(Group Owners)http://localhost:8088/update_db_v5.php(Tags)http://localhost:8088/update_db_v6.php(Attachments)http://localhost:8088/update_db_v7.php(Schema Patches)http://localhost:8088/update_db_v8.php(Schema Patches)http://localhost:8088/update_db_v9.php(Latest Schema)http://localhost:8088/update_recurring.php(Recurring Logic)http://localhost:8088/update_features.php(Subtasks & API Tokens) <-- NEW
Security Tip: After setup, delete
install.phpand theupdate_*.phpfiles from the server:docker exec -it Donewise rm /var/www/html/install.php
📖 Usage Guide
Getting Started
- Go to
http://localhost:8088/register.php. - Create your first Group (e.g., "Home").
- You are now the Group Owner.
API & Shortcuts (iOS/Android)
- Go to Settings -> API Access.
- Scan the QR Code to get your Token.
- Point your shortcut to
POST /api/add_task.phpwith HeaderAuthorization: Bearer <token>. - Smart Dates: Send text like "Book vet appointment in 3 days" or "Buy eggs next Monday" and Donewise will handle the date automatically.
Managing Tasks
- Add: Type in the main input. Use
#for tags (e.g.,#urgent) and@to assign users. - Edit: Click the pencil icon to rename or tap the task text to open Task Details.
- Subtasks: In Task Details, add checklist items (e.g. ingredients). You can even
@mentionpeople in subtasks! - Snooze: Click the 💤 button on any task to instantly move it to tomorrow.
Recurring Items
- Click Recurring in the top navigation.
- Create rules like "Pay Internet Bill" every "28 Days".
- Donewise automatically checks these rules when you visit the app and adds the task to "Today" if it's due.
❓ Troubleshooting
"General error: 14 unable to open database file"
- The web server (www-data) cannot write to the
data/folder. Re-run the permission commands in Step 4 of Installation.
Images or Attachments fail to upload
- Ensure the
uploads/folder exists and has write permissions. - Check that your file is within the PHP upload limit (default 20MB in the Dockerfile).
@Mentions list is cut off
- This is a known display issue on smaller screens if the group has many members. It is resolved in the latest CSS update by adding a scrollbar to the dropdown.
Dates/Times are incorrect
- Check the
PHP_TZvariable in yourdocker-compose.yml. You must restart the container after changing this:docker compose down && docker compose up -d.