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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Docker and Docker Compose installed on your machine.
- (Optional) A reverse proxy (Nginx, Traefik, or Nginx Proxy Manager) for SSL/HTTPS access.
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)
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. |
Open a terminal in your project folder and run:
docker compose up -d --build
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
Use the built-in scripts to initialize and upgrade your database schema.
Open your browser and visit:
http://localhost:8088/install.php
(You should see a "✅ Installed" message).
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
- Go to
http://localhost:8088/register.php. - Create your first Group (e.g., "Home").
- You are now the Group Owner.
- 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.
- 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.
- 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.
"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.