Daily Task Manager is a local-first application for recording, organising and reviewing personal daily tasks.
Built with Python, Streamlit and SQLite, it provides a focused workflow for creating tasks, marking them as complete, reusing common task definitions and browsing task history. Task data is stored locally and database migrations are applied automatically when the application starts.
The application is intended for a single user and can be run locally or in Docker. It does not require an external database, cloud service or Internet connection.
The Today page displays tasks whose start date is today, plus all open tasks irrespective of their start date. Tasks are ordered by start date and description and can be:
- Closed using a selected completion date
- Reopened by clearing their completion date
- Deleted after confirmation
New tasks can be added individually, selected from the task library or created together from a reusable template.
An ad-hoc task records:
- Description
- Start date
- Task type and its associated category
- Optional location
Browse current and historical tasks using filters for:
- Start-date range
- Description
- Open or completed status
- Task type
- Category
The same close, reopen and delete actions available on the Today page can be applied from the filtered results.
The Task Library stores pre-defined tasks that can be added without repeatedly entering the same details. Each definition contains a description, task type and optional location; its category is inherited from the selected task type.
When a library task is added to a date, its current values are copied into the task history. Later changes to the library definition do not alter existing historical tasks.
Templates group task-library entries into reusable daily routines. A template can contain any number of task occurrences, including repeated occurrences of the same task.
Templates can be created, edited, duplicated and deleted. Adding a template to a date creates a separate historical task for every occurrence configured in that template.
Tasks are organised using three sets of reference data:
- Categories provide the top-level classification
- Task types belong to a category
- Locations optionally record where a task takes place
The Reference Data page maintains these values. Names are matched case-insensitively, and records that are already in use cannot be deleted.
A task is considered open while it has no end date and completed once an end date has been recorded. Completion dates cannot be earlier than the task's start date.
Import data from CSV files for:
- Historical tasks
- Pre-defined tasks
- Templates
- Categories
- Task types
- Locations
Historical-task dates use DD/MM/YY. Location and task end date may be left blank where the selected format permits them.
Template imports contain one row for each task occurrence associated with a template. During import, missing categories, task types, locations, pre-defined tasks and templates are created as required. Invalid rows are reported individually so that valid records can still be imported.
Ready-to-use CSV layouts are provided in data/templates.
Export the same six datasets using CSV layouts compatible with the corresponding import formats. Default filenames are supplied and can be edited before downloading.
Historical-task exports can optionally be filtered inclusively by task start date. The default range runs from the beginning of the current year through today.
CSV export provides a portable copy of task data for backup, migration, spreadsheet use or independent analysis.
Daily Task Manager is deliberately designed as a simple personal task recorder rather than a general-purpose project-management platform.
Its scope includes:
- Recording, completing, reopening and deleting daily tasks
- Maintaining reusable task definitions and daily templates
- Organising tasks by category, type and location
- Searching and filtering task history
- Importing and exporting portable CSV data
- Local and Docker-based deployment
Authentication, multiple users, teams, assignments, priorities, dependencies, reminders, notifications and Kanban workflows are outside the current scope. New functionality is intended to be driven by practical personal use while preserving the application's local-first design and straightforward data model.
To report an issue or suggest an improvement, please use the project's GitHub Issues page.
This project is licensed under the MIT License — see the LICENSE file for details.