Tuido is a simple productivity application that provides a text user interface (TUI) for managing tasks, topics and notes. The Kanban columns of the task view and the fields of the topics can be defined by the user. All data are saved locally – no cloud requirement.
Many productivity apps offer an overwhelming number of features that you often don't actually need. Their complexity might slow you down. Tuido takes a different approach: minimalism. It gives you a clean, reliable space to plan your day as efficiently as possible.
The components are built using the Textual and Rich library, offering a modern terminal UI experience focused on clarity and interactivity.
The purpose of this application is to provide a space for planning and organizing the current day. With its keyboard-driven, minimalist interface, it aims to support an efficient workflow. It is not intended for long-term planning and is meant to complement apps like Notion or OneNote, not replace them.
Use Tuido for everything that is relevant today but can be deleted in the next few days. Tuido aims to help you separate temporary stuff from your personal knowledge management.
Important
This application is under development. It's not yet suitable for a productive environment.
See the Roadmap to gain an insight into the current project status.
- Minimalistic text user interface – no overhead
- Full keyboard navigation (but mouse interaction is also supported)
- Manage tasks in a Kanban system with user-defined columns
- Manage topics in a simplified database view with customizable fields
- Quick notes (displayed as text, as rendered Markdown or both)
See Feature Details for a more in-depth overview of the features and use cases.
See pyproject.toml.
pip install py-tuidogit clone https://github.com/cgroening/py-tuido.git
cd py-tuido
pip install -e .Alternatively, tuido can be run without installation, see Section Without Installation.
tuidoOn the first run, Tuido creates the config and data directories and copies the default files into them.
Options:
| Flag | Description |
|---|---|
-C, --config DIR |
Use a custom folder for config.yaml and bindings.yaml |
-D, --data-folder DIR |
Use a custom folder for tasks.json, topics.json and notes.md |
Default paths:
| Platform | Config | Data |
|---|---|---|
| macOS / Linux | ~/.config/tuido/ |
~/.local/share/tuido/ |
| Windows | %APPDATA%\tuido\ |
%LOCALAPPDATA%\tuido\ |
The package can also be run without installation from the project root:
python -m tuidoTuido is divided into three tabs: Tasks, Topics and Notes.
The Tasks module helps you organize your day by managing current tasks in a Kanban system. It is designed to mainly focus on what matters today – simple, fast and effective.
Key features:
- Create, edit and delete tasks
- Move tasks between columns
- Change number of columns an their titles
- Tasks are automatically sorted in the following order: priority, start date, end date, title
- Each tasks supports the following fields:
- Title
- Priority
- Start Date
- Due Date
- All changes are saved automatically
Use cases:
- Plan your day with a few concrete, actionable tasks
- Stay focused by seeing only what’s relevant now
- Clear out finished tasks at the end of the day to keep your board clean
The Topics tab provides a structured way to organize information belonging to different topics that is relevant beyond just today – for example ongoing ideas.
While the task view is designed for immediate, short-lived actions, topics offer a more stable, form-based overview that supports medium-term planning and documentation.
Key features:
- Display all topics in a table view for quick navigation
- Show and edit topic details in a dynamic form
- Changes can be saved or discarded
Each topic is made up of fields defined by the user. The layout of the form and table adapts to these custom fields, allowing Tuido to be tailored to your workflow.
Supported field types:
string– for free text like titles or commentsdate– for scheduling and deadlinesselect– for statuses, categories or priorities
You can define the structure of topics in the config.yaml file. This allows you to model exactly the information you need – and nothing more.
Use cases:
- Keep track of your ongoing projects or areas of responsibility
- Save notes on meetings
- Define and follow up on goals, decisions or documentation
The topic management module helps you maintain clarity and focus by separating ongoing, structured data from the more dynamic daily task view.
The Notes tab is your space for unstructured, short-lived information – things that don't yet belong in a task or topic, but still matter right now.
Whether it's meeting notes, rough ideas, phone numbers or spontaneous thoughts – this module offers a lightweight way to capture temporary information quickly and without distraction.
Key features:
- A simple text editor built directly into the terminal UI
- Supports both plain text and rendered Markdown
- Toggle between raw, rendered or split view
- All changes are saved automatically – no need to press save
Use cases:
- Jot down ideas or thoughts throughout the day
- Take notes during meetings or calls
- Use Markdown to structure ad-hoc content (e.g. TODO lists, outlines)
- Store temporary content that doesn't need to be kept long-term
Notes are intended to be transient – they're not part of a long-term knowledge base. If something becomes important or structured, move it to a Topic or Task.
All configuration lives in two files inside the config directory.
Defines the structure of topics and the Kanban columns for tasks.
fields – each entry is a row in the topic form; a row can contain one or more fields side by side:
fields:
-
- name: "topic" # internal identifier
caption: "Topic" # displayed label
type: "string" # string | date | select
table_column_width: 20 # column width in table view; omit to hide
-
- name: "status"
caption: "Status"
type: "select"
options: ["Open", "In Progress", "Done"]
table_column_width: 11
- name: "created"
caption: "Created"
type: "date"
table_column_width: 10
input_width: 16 # width of the input widget
read_only: true
computed: "created_date" # auto-filled on create: created_date | edit_date
-
- name: "notes"
caption: "Notes"
type: "string"
lines: -1 # number of lines (-1 = fill available space)task_columns – defines the Kanban columns in display order:
task_columns:
- name: "inbox"
caption: "Inbox"
- name: "today"
caption: "Today"
- name: "done"
caption: "Done"Defines keyboard shortcuts. Bindings are grouped by context: _global, tasks, topics, notes.
_global:
- key: q
action: previous_tab
description: Tab ← # shown in the footer
tooltip: Select the previous tab
show: false # hide from footer (optional, default: true)
tasks:
- key: n
action: new
description: New
tooltip: Create a new taskAvailable actions:
| Context | Action | Description |
|---|---|---|
_global |
previous_tab, next_tab |
Switch between tabs |
_global |
toggle_dark |
Toggle dark/light mode |
_global |
quit |
Quit the app |
_global |
prev_theme, next_theme |
Cycle color themes |
tasks |
new, edit, delete |
Manage tasks |
tasks |
move_left, move_right |
Move task between columns |
tasks |
select_left_column, select_right_column |
Navigate columns |
tasks |
select_upper_task, select_lower_task |
Navigate tasks |
topics |
new, delete |
Manage topics |
topics |
save, discard |
Save or discard edits |
topics |
focus_table |
Focus the topic list |
notes |
show_textarea |
Show text editor only |
notes |
show_md |
Show rendered Markdown only |
notes |
show_textarea_and_md |
Show editor and preview side by side |
- Basic topic management (CRUD)
- Basic task management (CRUD)
- Basic note taking
- Custom keyboard shortcuts via config
- Custom sort order for tasks (by priority, date or manual)
- Custom sort order for topics (by specified column or manual)
- Filtering and searching topics
- Filtering and searching tasks
-
tuido add task ...: Quick-add via CLI (add a task to inbox, append to notes, or create a topic without opening the TUI) -
tuido status: Quick-summary (show a summary of today's and tomorrows's tasks in the terminal without opening the TUI)
- More field types for topics:
bool,multiselect,number - New field type
markdownwith toggle between raw and rendered view
- Open text fields in an external editor (e.g. Neovim)
- Add a notes field to tasks with Markdown rendering support
- Task history/changelog
- Duplicate task/topic
- Field validations: define rules for topic fields beyond basic types, such as email format, date ranges or numeric ranges (e.g 1–100)
- More computed field functions (currently:
created_date,edit_date) planned addition:sequence_numberand user requested functions) - Field formulas: derive a field's value from other fields using a simple expression (e.g.
folder = project_number + "/" + project_name)
- Compact mode which removes the inner spacing of input widgets
- Task count per Kanban column
- Import and export tasks as CSV
- Import and export topics as CSV
- Export tasks, topics and notes as Markdown file
The following features are planned but not yet assigned to a specific version.
- Suggest next task based on priority and due date
- Task recurrence (e.g. daily, weekly tasks)
- Time tracking per task
- Multi-project support with separate configs and data per project
- Undo last change
- Archive for completed tasks
- Date picker widgets
- Bulk operations: actions on multiple tasks at once
